[英]want to change label text from another fxml controller class in javafx
[英]How to set text JFXTextField from another controller of another FXML in JavaFX
我正在嘗試通過單擊另一個 FXML Tableview 中的一行來為 FXML 中的 JFXTextField 設置文本值,但是,這是我嘗試過的
Controller 1
public void setTextField(String tes){
this.txtKelas.setText(tes);
}
Controller 2
@FXML
void clickItem(MouseEvent event) {
if (event.getClickCount() == 1 || event.getClickCount() == 2) {
if (tableView.getSelectionModel().getSelectedItem() == null) {
System.out.println("Null");
} else if(tableView.getSelectionModel().getSelectedItem() != null){
int index = tableView.getSelectionModel().getSelectedIndex();
FXMLLoader load = new FXMLLoader();
Kereta_Controller controller;
load.setLocation(getClass().getResource("/com/kereta_api/views/Dashboard/Manager/Menu/Kereta_Api.fxml"));
try {
load.load();
controller = load.getController();
controller.setTextField(tableView.getColumns().get(0).getCellObservableValue(index).getValue().toString());
} catch (IOException ex) {
Logger.getLogger(Pilih_Kelas_Controller.class.getName()).log(Level.SEVERE, null, ex);
}
Stage stage = (Stage) tableView.getScene().getWindow();
stage.close();
}
}
}
運行程序后,文本字段沒有更新,我想知道為什么? 這個問題有什么可能的解決方案嗎? 謝謝你!
您可以通過使用 static 變量來解決此問題,試試這個:
Controller 1:
public static JFXTextField txtKelasStatic;
@Override
public void initialize(URL location, ResourceBundle resources) {
txtKelasStatic = txtKelas;
}
PS:需要在Controller 1
中實現Initializable接口。
Controller 2:
@FXML
void clickItem(MouseEvent event) {
if (event.getClickCount() == 1 || event.getClickCount() == 2) {
if (tableView.getSelectionModel().getSelectedItem() == null) {
System.out.println("Null");
} else if(tableView.getSelectionModel().getSelectedItem() != null){
int index = tableView.getSelectionModel().getSelectedIndex();
Kereta_Controller.txtKelasStatic.setText(tableView.getColumns().get(0).getCellObservableValue(index).getValue().toString());
Stage stage = (Stage) tableView.getScene().getWindow();
stage.close();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.