5

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

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

eventBus.fireEvent(new MyDialogEvent(results));

在上面的代码中,MyDialog extends JDialog. 很明显,正在构建一个子对话框(并以某种方式显示给最终用户),然后当用户退出对话框时(通过单击 OK 或其他按钮),一个resultsbean 用于在事件总线上触发一个新事件.

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

  1. Java 如何/在哪里被告知实际向用户绘制/显示对话框?和
  2. 在将事件触发到总线之前,Java 如何/在哪里被告知挂起/等待用户退出对话框?

是不是一个JDialog孩子在创建时总是会显示对话框JDialog,并且在退出对话框之前不会从构造函数返回?这是上面的 hteMyDialog构造函数的概要:

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

提前感谢您对了解对话框如何打开、“挂起”(尽管我知道它实际上并未挂起/冻结)、关闭然后触发事件的任何帮助/见解。

4

2 回答 2

1

Dialog.setVisible() 是显示对话框并阻塞直到对话框关闭的方法。请参阅Dialog 的文档。dispose() 然后销毁对话框对象。

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

于 2013-04-29T15:24:35.097 回答
1

1)

setVisible(true);

2)

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

阅读 JavaDocs 了解JDialog更多细节。

最相关的是:

于 2013-04-29T15:20:53.350 回答