java想要更改javafx中另一个fxml控制器类的标签文本
我有两个控制器类Fxml1。java和Fxml2。JAVA在Fxml1中。java I有标签l1,在Fxml2中有标签l1。java我有文本字段t1。我在文本字段t1中有一些文本,我想将这些文本设置为标签l1。我想做下面这样的事情。下面是一个用于理解的虚拟哑代码,认为两个类都有单独的FXML文件。这里我收到了NullPointerException
//class Fxml1
public class Fxml1{
public label l1;
l1.setText("hello");
}
//class Fxml2
public class Fxml2{
public TextField t1;
public Button b1;
public Fxml1 ob;
public void onButtonSubmit(ActionEvent event){
ob = new Fxml1();
ob.l1.setText(t1.getText());
}
public void initialize(URL url, ResourceBundle rb){
t1.setText("This is textfield text");
}
}
# 1 楼答案
在Fxml2控制器中,您正在创建一个新的、完全独立的Fxml1实例,该实例未链接到fxml图形文件,因此它无法更新您所需的标签,因为它无法访问它或知道它存在
你应该通过使用事件来处理这个问题。基本教程可以在Vogella's site上找到
将事件代理注入两个控制器:
在Fxml2控制器中,当文本更新时,应将此字符串发布到事件代理:
在Fxml1控制器中,您应该监听此事件,并在触发时更新标签