2012-03-19 4 views
1

私はJavaFXから始まり、パフォーマンス問題に悩まされています。あまりにも長く集中していないので、コードを貼り付ける代わりに説明しようとします。JavaFXのSceneにすでに追加されているGroupオブジェクトを再利用/編集する方法

私はアプリケーションを起動し、起動メソッドを呼び出してStageオブジェクトを受け取りました。今まで、それはすべてOKです。

ここで、グループを使用して構造を作成します。最初のグループ(Aと呼ぶことができます)を作成し、ステージ上でsetRoot()を使用して設定しました。次に、他の3つのグループ(それぞれが葉の複雑な構造を持つ)を作成し、それぞれを最初のグループの子として追加します(これを「A」と呼びます)。

問題:グループ構造のうちの1つだけを更新し、それらをすべて実行せずに、ステージオブジェクトでsetRoot()を再度呼び出すことができます。 - しかし、親からそれを削除しようとすると、例外 "java.lang.IllegalStateException:FXアプリケーションスレッドではありません。" - 別のグループに置くと、同じ例外が発生します。

すでに作成したグループを再利用する方法はありますか、またはリメイクする必要があるグループを置き換えることはできますか?

私は、ほとんど私の問題を説明しようとしたが、英語は私の自然言語ではないので、私はuを理解することを願っ;)事前に

おかげで...

答えて

3

Not on FX application thread;を使用すると、上のUI操作を実行する意味間違ったスレッド。 UIの変更は、UIスレッド(別名「FXアプリケーションスレッド」)でのみ行われます。そうしないと、UI操作を同期することができなくなります。その使用、次のコードを達成するために:Platformはお返事本当にありがとうこんにちはセルゲイ、javafx.application.Platform

+0

ある

Platform.runLater(new Runnable() { public void run() { A.getChildren().clear(); // or whatever operation you need } }); 

。私はあなたが問題を抱えていると思っています。私は今仕事中です。私の研究は家にいます。後で、家で私はこれを試して、あなたにフィードバックを返すだろう...もう一度感謝... –

+0

セルゲイ、それは完璧に動作します!もう一度ありがとう。 –

関連する問題