不断更新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线程中更改标签的值,所以我没有在updateMessageupdateProgress方法中看到这一点。

哪里不对?

您需要对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); }