这个Swing代码是如何工作的?

时间:2013-04-29 15:17:11

标签: java swing user-interface dialog jdialog

我在Java / Swing GUI项目中看到以下代码:

MyDialog dlg = new MyDialog(parent, isFizz);
MyDialogResults results = dlg.getResults();

eventBus.fireEvent(new MyDialogEvent(results));

在上面的代码中,MyDialog extends JDialog。很明显,正在构建子对话框(并以某种方式向最终用户显示),然后当用户退出对话框时(通过单击OK或其他按钮),results bean用于触发新对话框活动巴士上的活动。

但我正在努力解决两件事:

  1. Java被告知如何/在哪里实际绘制/向用户显示对话框?和
  2. 在将事件发送到总线之前,Java被告知如何/在哪里挂起/等待用户退出对话框?
  3. 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();
        }
    }
    

    提前感谢任何帮助/见解,了解对话框的打开方式,"挂起" (虽然我知道它实际上没有挂起/冻结),关闭,然后发射事件。

2 个答案:

答案 0 :(得分:1)

1)

setVisible(true);

2)

super(parent, "My Dialog", true);

阅读JDialog的JavaDocs以获取更多详细信息。

最相关的是:

答案 1 :(得分:1)

Dialog.setVisible()是在对话框关闭之前显示对话框和块的方法。请参阅documentation for Dialog。 dispose()然后销毁对话框对象。

所以你的猜测是部分正确的。构造函数显示对话框,阻塞直到它关闭,然后销毁对话框。但是,这是“MyDialog”的一个特征,而不是JDialog的特征