Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.swing.JDialog在失去焦点时冻结?_Java_Swing_Freeze - Fatal编程技术网

javax.swing.JDialog在失去焦点时冻结?

javax.swing.JDialog在失去焦点时冻结?,java,swing,freeze,Java,Swing,Freeze,我正在使用Swing编写一个应用程序。我有我的主应用程序框架(javax.swing.JFrame),它可以打开我的第一个javax.swing.JDialog,名为ClientMngDialog,其中包含一个javax.swing.JTable,其中填充了从数据库加载的数据 当我在表中选择一个客户机时,我想打开第二个javax.swing.JDialog,名为clienteditload,位于第一个客户机的顶部,然后我可以编辑所选客户机的信息 这两个javax.swing.JDialog都使用

我正在使用Swing编写一个应用程序。我有我的主应用程序框架(
javax.swing.JFrame
),它可以打开我的第一个
javax.swing.JDialog
,名为
ClientMngDialog
,其中包含一个
javax.swing.JTable
,其中填充了从数据库加载的数据

当我在表中选择一个客户机时,我想打开第二个
javax.swing.JDialog
,名为
clienteditload
,位于第一个客户机的顶部,然后我可以编辑所选客户机的信息

这两个
javax.swing.JDialog
都使用
Dialog.ModalityType.DOCUMENT\u MODAL
,因为Javadoc说:

“文档模式”对话框会阻止同一文档中的所有窗口,但子层次结构中的窗口除外。在此上下文中,文档是共享共同祖先(称为文档根)的窗口层次结构,文档根是没有所有者的最近祖先窗口

第一个对话很好,没有什么奇怪的事情发生。但是,当我点击对话框之外的其他地方(可能我认为它是一个失去焦点)时,第二个,超过第一个,<强>冻结< /强>。它上面的所有组件都不再响应,我唯一能做的就是单击它的关闭按钮

我已经尝试了
对话框.ModalityType.APPLICATION\u MODAL
,但没有帮助,总是出现同样的问题。我已经将
SwingUtilites.isEventDispatchThread()
放在了所有地方,它按预期返回
true

有人有线索吗


p、 我在Xfce 4桌面上使用Debian Wheezy。

重新启动计算机后,问题消失了。真的很奇怪,我不知道为什么。

重新启动计算机后,问题就消失了。真的很奇怪,我不知道为什么。我将继续测试。要明确的是:在创建
JDialog
时,是否传递对父窗口的引用?例如:
JDialog客户端编辑对话框=新的JDialog(这个)(来自JFrame的方法)?@BrianS是的,我的主框架有一个单例,因为我总是需要它的引用。因此,当我创建第一个对话框时,我只调用singleton并检索主框架的引用。要创建第二个对话框,是的,我只需将
this
(参考第一个对话框)传递到第二个对话框。好问题,@BrianS-这就引出了解决方案:您的第二个对话框需要第一个对话框作为父对话框@MartinFrank已经完成了,当我创建第二个对话框时,它引用第一个对话框作为其父对话框。重新启动电脑后问题消失了,真的很奇怪。