有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在javaFX中的对话框和父控制器之间通信

我有一个MainController,当我按下某个按钮时,一个自定义对话框(从自定义FXML文件加载)从MainController类弹出。 现在,在这个对话框中,有一些文本输入字段和一个按钮。当我按下该按钮时,对话框应该关闭,输入字段的数据应该发送到父控制器(在本例中是主控制器)。 到目前为止,我已经想到了一种方法:

  1. 首先,通过使用单例类来存储值
  2. 其次,在创建对话框的过程中,通过loader方法发送对话框实例
DialogController dialogController = loader.getController();
dialogController.setContent(dialog);

但这样一来,我担心会出现内存泄漏之类的问题。有没有更好的方法来做到这一点,比如使用接口?我们将非常感谢您的帮助

到目前为止,我的代码是:

主控制器。java

 private void openDialog() {
        try {
            JFXDialogLayout content = new JFXDialogLayout();
            FXMLLoader loader = new FXMLLoader(getClass().getResource("dialogs/dialog.fxml"));
            loader.load();
            JFXDialog dialog = new JFXDialog(stackPaneRoot, loader.getRoot(), JFXDialog.DialogTransition.CENTER);
            DialogController dialogController = loader.getController();
            dialogController.setContent(dialog);
            dialog.show();
        } catch (Exception e) {
            e.printStackTrace();
     }
 }

对话框控制器。java

public class DialogController {

    @FXML
    private TextField nameInput;
    private JFXDialog dialog;

    @FXML
    void onCloseClick(ActionEvent event) {
        dialog.close();
        // Util is the singleton class to store the data
        Util.getInstance().setName(nameInput.getText());
    }

    public void setContent(JFXDialog dialog) {
        this.dialog = dialog;
    }
}

共 (0) 个答案