Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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
Java Swing:Catch MouseeEvent在被模式对话框阻止的窗口上?_Java_Swing_Awt - Fatal编程技术网

Java Swing:Catch MouseeEvent在被模式对话框阻止的窗口上?

Java Swing:Catch MouseeEvent在被模式对话框阻止的窗口上?,java,swing,awt,Java,Swing,Awt,我有一个JFrame,它打开一个模态JDialog。 JFrame有几个按钮,当JDialog打开时,这些按钮不应该是可用的->因此,模态JDialog。 但是当单击JDialog外部的区域时,JDialog应该关闭。不过,我在下面概述的解决方案并没有捕获JFrame上的任何鼠标事件 我现在需要确定用户是否单击了窗口,但在JDialog之外。 根据注释说明这样做的原因:一旦用户在JDialog外部单击,JDialog应该关闭 我目前最好的猜测是创建一个AWTEventListener(如中所示)

我有一个JFrame,它打开一个模态JDialog。 JFrame有几个按钮,当JDialog打开时,这些按钮不应该是可用的->因此,模态JDialog。 但是当单击JDialog外部的区域时,JDialog应该关闭。不过,我在下面概述的解决方案并没有捕获JFrame上的任何鼠标事件

我现在需要确定用户是否单击了窗口,但在JDialog之外。
根据注释说明这样做的原因:一旦用户在JDialog外部单击,JDialog应该关闭
我目前最好的猜测是创建一个AWTEventListener(如中所示):

然后在JDialog打开时添加它:

                Toolkit.getDefaultToolkit().addAWTEventListener(
                    listener, AWTEvent.MOUSE_EVENT_MASK);
不幸的是,当对话框处于模态时,该对话框外似乎没有发生AWT事件。
我曾考虑改用JFrame的玻璃窗格,但这似乎不切实际。

我能在这样一个“modally blocked”窗口上捕获事件吗?还是我完全走错了方向?

“我现在需要弄清楚是否有用户单击了窗口,但在JDialog之外。”…为什么?看,谢谢!是的,我真的完全忘记了为什么我甚至需要抓住这个点击投票来结束,因为这个问题已经无法重现了;如果没有,请更新问题。请解释关闭请求?我仍然有这个问题。。。或者这是对更多示例代码的请求?我不知道您的用户是否理解阻塞对话框的概念。如果只需单击窗口关闭对话框,为什么要使其阻塞?你没有有效地描述你的问题。我也同意这是一个XY问题。
                Toolkit.getDefaultToolkit().addAWTEventListener(
                    listener, AWTEvent.MOUSE_EVENT_MASK);