我在Java / Swing GUI项目中看到以下代码:
MyDialog dlg = new MyDialog(parent, isFizz);
MyDialogResults results = dlg.getResults();
eventBus.fireEvent(new MyDialogEvent(results));
在上面的代码中,MyDialog extends JDialog
。很明显,正在构建子对话框(并以某种方式向最终用户显示),然后当用户退出对话框时(通过单击OK或其他按钮),results
bean用于触发新对话框活动巴士上的活动。
但我正在努力解决两件事:
是JDialog
子节点在创建JDialog
时始终显示对话框,并且在退出对话框之前不会从构造函数返回?这是上面的hte MyDialog
构造函数的概要:
public class MyDialog extends JDialog {
private boolean isFizz;
private MyDialogResults results;
// Getters and setters for all properties...
public MyDialog(Frame parent, boolean isFizz) {
super(parent, "My Dialog", true);
setIsFizz(isFizz);
setVisible(true);
dispose();
}
}
提前感谢任何帮助/见解,了解对话框的打开方式,"挂起" (虽然我知道它实际上没有挂起/冻结),关闭,然后发射事件。
答案 0 :(得分:1)
答案 1 :(得分:1)
Dialog.setVisible()是在对话框关闭之前显示对话框和块的方法。请参阅documentation for Dialog。 dispose()然后销毁对话框对象。
所以你的猜测是部分正确的。构造函数显示对话框,阻塞直到它关闭,然后销毁对话框。但是,这是“MyDialog”的一个特征,而不是JDialog的特征