java如何在javaFX中的对话框和父控制器之间通信
我有一个MainController,当我按下某个按钮时,一个自定义对话框(从自定义FXML文件加载)从MainController类弹出。 现在,在这个对话框中,有一些文本输入字段和一个按钮。当我按下该按钮时,对话框应该关闭,输入字段的数据应该发送到父控制器(在本例中是主控制器)。 到目前为止,我已经想到了一种方法:
- 首先,通过使用单例类来存储值
- 其次,在创建对话框的过程中,通过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) 个答案