2017-07-26 10 views
0

Javafxプロジェクトにはブラウザがあります。私はブラウザ内でangularJSを使用しています。バックグラウンドスレッドから新しい状態にしようとすると、ボタンの1つと対話するまでビューはそれを行いません。そのため、角度コードが呼び出されますが、ビューは何かをクリックするまでフリーズします。javaFXブラウザをバックグラウンドスレッドから更新する

Task task = new Task<Void>() { 
     @Override public Void call() { 
      while (true) { 
       try { 
        System.out.println("sLEEPING"); 
        Thread.sleep(4000); 
        System.out.println("Reloading page"); 
        Platform.runLater(() -> { 
         communicator.changeUI(); 

        }); 
        System.out.println("pAGE Reloaded"); 

       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }; 
    Thread t = new Thread(task); 
    t.start(); 

答えて

1

は(documentationに「スレッド」の項を参照)、バックグラウンドスレッドからUIの状態を更新しないでください。実際にUIを変更するコードをPlatform.runLater()にラップします(またはTaskonSucceededハンドラを使用します)。

例えば:

// Runs in some background thread: 
public class MyRunnable { 

    @Override 
    public void run() { 
     // long-running code here... 

     // to update UI: 
     Platform.runLater(() -> { 
      // update UI here... 
     }); 
    } 
} 
+0

私はPlatform.runLater()を使用していますが、ビューはまだクリックを待っている、私のコードを追加しました。私はブラウザに何らかのリフレッシュをさせる必要があるかもしれないと思っていましたか?実際のリロードではありません –

関連する問題