我在main方法中运行我的主窗口,如下所示:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
NoteSystem MainWindow = new NoteSystem();
MainWindow.initUI();
}
});
然后当在这个表单上按下一个按钮时,我通过实例化我创建的类来创建一个窗口。我在检测第二个表单何时关闭以及文本框/其他控件包含的内容时遇到问题。
正确的方法是: a)当第二个窗口关闭时,在NoteSystem中触发事件 b)允许NoteSystem检查第二个窗口中的所有组件/控件
我考虑使用JOptionPane,但我想在我自己的班级中完全创建窗口。在等待来自第二个窗口的响应时让主窗口冻结的想法适用于我的应用程序,所以如果我可以将JOptionPane与我自己的类一起使用,那将是理想的。
由于
答案 0 :(得分:3)
最好的方法是使用 模态 对话框,一个类似 JFrame的窗口,但会停止调用代码中的程序流,直到它不再可见。这样,当对话窗口被处理时,调用代码将知道完全,因为它的代码流将再次恢复,因此调用代码通常会从对话框窗口代码中提取信息。点。 JOptionPane是这些类型中的一种,因此是模态JDialog(其中JOptionPane是子类型)。这些中的任何一个都可以显示为与JFrame中显示的任何GUI一样复杂的GUI,因此不要将它们卖空。您会注意到大多数JOptionPane方法的第二个参数是Object
类型,这意味着任何可以进入那里,但大多数情况下您会传入一个字符串对于一个简单的JOptionPane,或者一个可以充满组件和其他嵌套JPanel的JPanel,这样,如果需要,JOptionPane可以显示复杂的GUI。
例如,请参阅: