我有一个控制器类扩展线程,
和我的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);
}
我很感激有人帮助我克服这个问题。
答案 0 :(得分:0)
在其他线程中修改JavaFX组件可能会导致问题。
虽然在你的run方法中你可以使用Platform.runLater(...);
在您的fxml文件中为TextField
添加标识符(fx:id)
然后你的Controlled类必须实现Initializable
接口,该接口有一个方法,当你的所有fxml元素都被初始化时将被调用。
一旦发生这种情况,您可以拨打Run
方法并按照上述说明更新TextField
。
基本上在SceneBuilder中使用具有固定id的TextField和Button创建基本布局。然后在actionListener
接口的方法内向按钮添加Initializable
:
button.setOnAction(a->{···});