我有一个内置浏览器的Javafx项目。我在浏览器中使用angularJS。当我尝试从后台线程转到新状态时,在我与其中一个按钮交互之前,视图不会执行此操作。因此,角度代码被调用,但视图被冻结,直到点击某些东西。
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();
答案 0 :(得分:1)
不要从后台线程更新UI的状态(请参阅documentation中的&#34;线程&#34;部分)。包含实际更改Platform.runLater()
中的用户界面的代码(或使用Task
和onSucceeded
处理程序)。
E.g:
// Runs in some background thread:
public class MyRunnable {
@Override
public void run() {
// long-running code here...
// to update UI:
Platform.runLater(() -> {
// update UI here...
});
}
}