如何解决如何在javaFX中的对话框和父控制器之间进行通信
我有一个 MainController,当我按下某个按钮时,会从该 MainController 类中弹出一个自定义对话框(从自定义 FXML 文件加载)。 现在,在该对话框中,有一些文本输入字段和一个按钮。当我按下那个按钮时,对话框应该关闭并且来自输入字段的数据应该被发送到父控制器(在这种情况下是 MainController)。 到目前为止,我想到了一个方法:
- 首先,使用单例类来存储值
- 其次,在对话框的创建过程中通过加载器方法发送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 举报,一经查实,本站将立刻删除。