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