简而言之 - 我想要的是在被模态 JDialog 阻止的窗口上捕获鼠标单击。
这是一个例子:
public class BlockedFrameTest
{
public static void main ( final String[] args )
{
Toolkit.getDefaultToolkit ().addAWTEventListener ( new AWTEventListener ()
{
@Override
public void eventDispatched ( final AWTEvent event )
{
if ( event instanceof MouseEvent )
{
System.out.println ( event );
}
}
}, AWTEvent.MOUSE_EVENT_MASK );
final JFrame frame = new JFrame ( "Frame" );
frame.add ( new JLabel ( "Content" )
{
{
setBorder ( BorderFactory.createEmptyBorder ( 100, 100, 100, 100 ) );
}
} );
frame.pack ();
frame.setLocationRelativeTo ( null );
frame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
frame.setVisible ( true );
final JDialog dialog = new JDialog ( frame, "Dialog" );
dialog.setModal ( true );
dialog.add ( new JLabel ( "Content" )
{
{
setBorder ( BorderFactory.createEmptyBorder ( 50, 50, 50, 50 ) );
}
} );
dialog.pack ();
dialog.setLocationRelativeTo ( frame );
dialog.setVisible ( true );
}
}
通过查看示例输出日志,您将看到打开 JDialog 时未传递来自 JFrame 的事件(甚至传递到示例中添加的全局 AWT 事件侦听器)。
所以我想知道 - 有没有办法捕捉到被阻止的 JFrame 上的点击?
或者至少在用户“触摸”被阻止的东西时捕捉到一个事件?
我需要这个的原因是在发生此类事件时使自定义装饰的 JDialog 闪烁。