当我的服务器应用程序启动时,会打开JDialog
以向用户指示该应用正在加载。但是在JDialog
开头和结束之间,我使用JOptionPane.showMessageDialog()
来显示另一条消息。
问题是,如果我在关闭JDialog
之前显示此新消息,那么即使我关闭JDialog
对话框,JOptionPane
也永远不会关闭。如果我删除JOptionPane
对话框,则JDialog
会照常关闭。
为什么打开JOptionPane.showMessageDialog()
禁用JDialog
关闭?
使用此代码打开JDialog
:
final JDialog dlg = new JDialog(this, "Veuillez patienter, le serveur démarre...", true);
dlg.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dlg.setSize(300, 75);
dlg.setResizable(false);
dlg.setLocationRelativeTo(this);
Thread t = new Thread(() -> {
dlg.setVisible(true);
});
t.start();
这段代码关闭它:
dlg.setVisible(false);
在这些代码行之间,我这样做是为了打开消息对话框:
JOptionPane.showMessageDialog(this, String.format(I18n.i18n.getString("PopupWifiCreated"), this.SSID, this.password), null, JOptionPane.INFORMATION_MESSAGE);
有人有想法吗?
感谢。
答案 0 :(得分:0)
在我看来,将任何帧的可见性设置为false并不是最好的主意。当然这取决于你的目标,但我仍然不推荐它。它应该像例如:
dlg.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
dlg.close();
or
dlg.dispose();
如果它仍然无法工作,请尝试颠倒对话框的顺序 - 首先显示messageDialog,然后显示JDialog。