不断更新Java FX工作线程中的UI
我在我的FXML应用程序中有Label label
。
我希望这个标签每秒更换一次。 目前我使用这个:
Task task = new Task<Void>() { @Override public Void call() throws Exception { int i = 0; while (true) { lbl_tokenValid.setText(""+i); i++; Thread.sleep(1000); } } }; Thread th = new Thread(task); th.setDaemon(true); th.start();
然而,没有发生。
我没有得到任何错误或例外。 我不需要在我的主GUI线程中更改标签的值,所以我没有在updateMessage
或updateProgress
方法中看到这一点。
哪里不对?
您需要对JavaFX UI线程上的场景图进行更改。 喜欢这个:
Task task = new Task<Void>() { @Override public Void call() throws Exception { int i = 0; while (true) { final int finalI = i; Platform.runLater(new Runnable() { @Override public void run() { label.setText("" + finalI); } }); i++; Thread.sleep(1000); } } }; Thread th = new Thread(task); th.setDaemon(true); th.start();
化妆品更改塞巴斯蒂安的代码。
while (true) { final int finalI = i++; Platform.runLater ( () -> label.setText ("" + finalI)); Thread.sleep (1000); }