如何使用JavaFX Scene Builder从Run()方法在TextField上设置文本?

时间:2016-07-28 03:35:57

标签: java multithreading textfield

我有一个控制器类扩展线程,

和我的Run()方法,就这样做。

private int con = 1;

public void Run(){
   while(true){
      try{
          con++;
          print();
      catch(exception e){
          system.out.prinln(e);
      }
   }
}

这就是问题,我需要一个print()方法,在TextField上显示“con”。

我有一个frmMain.fxml和frmMainController.java类。

当我点击界面上的按钮时,如何显示我的“con”。 (evt onClickedMouse)。

我有这个:

  private TextField tf;
    private FrmMainController fr;

    public void show(){
       tf.setText(String.valueOf(con));
       fr.setTxtThread1(tf); 
    }

我很感激有人帮助我克服这个问题。

1 个答案:

答案 0 :(得分:0)

在其他线程中修改JavaFX组件可能会导致问题。

虽然在你的run方法中你可以使用Platform.runLater(...);

来完成

在您的fxml文件中为TextField添加标识符(fx:id) 然后你的Controlled类必须实现Initializable接口,该接口有一个方法,当你的所有fxml元素都被初始化时将被调用。

一旦发生这种情况,您可以拨打Run方法并按照上述说明更新TextField

基本上在SceneBuilder中使用具有固定id的TextField和Button创建基本布局。然后在actionListener接口的方法内向按钮添加Initializable

button.setOnAction(a->{···});