我有一个扩展 JFrame 的主类。
我将面板添加到这个由 JTable 和其他 Swing 组件组成的框架实例中。
在“ public static void main ”这个主类中,我设置了swing事件调度线程。
我将面板添加到此实例框架,并启动:
this.setTitle("Test");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
ETC...
到这里一切都好。
现在,对于 JTable,它有一个侦听器,当单击一行时,它会打开一个类 InfoDialog 的新实例。
在这个 InfoDialog 中,我照常添加 Swing 组件。
我在 JDialog 中有另一个调度线程,如下所示:
class InfoDialog {
JDialog jd;
public void initGUI() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jd = new JDialog();
jd.setModalityType(ModalityType.APPLICATION_MODAL);
jd.setTitle("Buy");
jd.setDefaultCloseOperation(jd.DISPOSE_ON_CLOSE);
jd.pack();
jd.setLocationRelativeTo(null);
jd.setVisible(true);
}});
}
}
放置事件调度线程解决了我遇到的错误(可能是因为它预先阻塞了当前线程),我的问题是,这是正确的方法吗?
感谢您的任何建议。