![](/img/trans.png)
[英]How to change label text of .fxml file from another java class(means out side the controller)?
[英]want to change label text from another fxml controller class in javafx
我有兩個控制器類Fxml1.java和Fxml2.java。 在Fxml1.java中,我具有標簽l1,在Fxml2.java中,我具有文本字段t1。 我在文本字段t1中有一些文本,我想將此文本設置為Label 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");
}
}
在您的Fxml2控制器中,您正在創建一個新的,完全獨立的Fxml1實例,該實例未鏈接到您的fxml圖形文件,因此它無法更新所需的標簽,因為它無權訪問它或知道它的存在。
您應該通過使用事件來處理。 在Vogella的網站上可以找到基本的教程。
將事件代理注入到兩個控制器中:
@Inject IEventBroker broker;
在文本更新后,應在Fxml2控制器中將此字符串發布到事件代理:
public void onButtonSubmit(ActionEvent event) {
broker.post("SomeSharedConstant", t1.getText());
}
在Fxml1控制器中,您應該偵聽此事件並在觸發它時更新標簽。
@Inject @Optional
public void getEvent(@UIEventTopic("SomeSharedConstant") String text) {
// text1 is a SWT Text field
l1.setText(text);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.