2016-07-11 13 views
0

ホバースタイルを持つ特定のUIエレメントはレンダリングされず、その場所にホワイトボックスが残されます。これは、アプリケーションウィンドウのサイズを変更した後、UIエレメントがアプリケーションウィンドウの元の境界の外側にある場合にのみ発生します。マウスポインタをホバリング位置から削除した後も、以下の画像に示されているボタンは正しく表示されないため、ボタンを再描画する必要があるときはいつでも問題が発生する可能性があります。アプリケーションウィンドウのサイズ変更後にJavaFX UIエレメントのホバースタイルが正しくレンダリングされない

"Device Logging" button is being hovered by the mouse, before resizing the window.

After resizing the window. Both the "Device Logging" and "Misc Tests" buttons are 100% outside of the original bounds of the window. The "Cloud Server Migration" button however is still rendering correctly.

私はスタイルを設定し、それらを削除しても効果はありませんしています。この問題は、ファームウェアアップデート機能の実行など、他の処理が行われている場合にのみ表示されるようです。つまり、UI時間を消費するものがあるかもしれませんが、特定のUI要素だけでなく、すべてのUI要素に影響を与えることが予想されます。

UIがSwingからJavaFXに変換されたため、すべてのスレッドにTaskまたはPlatform.runlater()の使用が含まれていませんでした。私は以来、すべてのUIの更新がPlatform.runlater()を使用していることを確認しましたが、UIをTasksに更新しない元のスレッドをすべて変換していません。以下では、ファームウェアアップデートを実行するフレームワークを取り上げます。

編集:ファームウェアのアップデートを開始せずに問題を再現できたので、UIレンダリングをブロックする処理とは関係ないと思います。この問題は、一部のUIを使用した後にのみ発生しました。私は上記のコードを削除しました。これは、UIの実際のレイアウトともっと関係があると私に信じさせます。

+0

明白なことはありませんが、問題を再現する最小限の例がないと思われますが、ここでは解決されません。 –

答えて

0

私はこの問題を理解したと思います。私はListViewを使ってオブジェクトとセルファクトリを保持し、それぞれのセルをカスタムUIでレンダリングします。アイテムをリストに入れると、セル内の各オブジェクトの情報を取得するために追加のスレッドが生成されます。 Objectに関連付けられた変数は、カスタムUI内のビュープロパティにバインドされます。私は、これらのプロパティを新しい情報で更新するためにPlatform.runlater()を使用していませんでした。 runlaterにセットを更新した後、問題は修正されたように見えます。

関連する問題