Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在程序运行时更新JavaFXGUI元素_Java_Javafx_Javafx 8_Javafx 2 - Fatal编程技术网

如何在程序运行时更新JavaFXGUI元素

如何在程序运行时更新JavaFXGUI元素,java,javafx,javafx-8,javafx-2,Java,Javafx,Javafx 8,Javafx 2,我希望能够在程序执行时看到图形界面上的更新,而不是等到单击按钮事件结束 public class MainController implements Initializable { @FXML private label label; @Override public void initialize(URL url, ResourceBundle rb) { } private void Event(ActionEvent event) { // start is a button

我希望能够在程序执行时看到图形界面上的更新,而不是等到单击按钮事件结束

public class MainController implements Initializable {
@FXML
private label label;

@Override
public void initialize(URL url, ResourceBundle rb) {
}

private void Event(ActionEvent event) {
    // start is a button
    if (event.getSource() == Start) {
      // calculations
      // updating label
      label.setText(" update me ");
      // other calculations
      // updating label for the second time
      label.setText(" update me ");
    }
  }
}

这是我的代码的一个简单示例(javaFXML),请注意,计算和更新比演示示例更复杂,执行时间太长,这就是我希望在执行时预览更新的原因。

您应该知道并使用线程概念

您的代码如下所示:

if (event.getSource() == Start) {

       new Thread(new Runnable() {
             @Override
             public void run() {
                 //do the calculations
                 System.out.println("calculations is finished");
             }
       }).start();

      // updating label
      label.setText(" update me ");

      new Thread(new Runnable() {
             @Override
             public void run() {
                 //do the other calculations
                 System.out.println("calculations is finished");
             }
       }).start();
      // updating label for the second time
      label.setText(" update me ");
    }
但您必须了解计算之间可能出现的同步问题。 我建议您学习以下课程:

您需要将工作移动到后台线程上,请参见和软件包。然后,您可以将
标签
绑定到的
消息
属性,并在所述
任务
@Slaw中使用。感谢您的帮助,我将尝试了解您的参考资料。当您被卡住时,请提供一个演示问题的示例。与您的问题无关:请学习java命名约定并坚持它们。