簡體   English   中英

如何從 JavaFX 中另一個 FXML 的另一個 controller 設置文本 JFXTextField

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM