微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在javaFX中的对话框和父控制器之间进行通信

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

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

但是这样,我担心会出现内存泄漏之类的。有没有更好的方法来做到这一点,例如使用接口?一些帮助将不胜感激!

到目前为止我的代码

MainController.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();
     }
 }

DialogController.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;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。