Чтобы было проще - я хочу, чтобы мы щелкнули мышью по окну, заблокированному модальным JDialog.Как поймать событие щелчка мыши в окне, заблокированном открытым 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);
}
}
Глядя на пример вывода журнала вы увидите, что события из JFrame не передаются, когда JDialog открыт (даже в глобальном слушателю AWT событий добавлен в примере) ,
Так что мне интересно - есть ли способ поймать щелчок на заблокированном JFrame?
Или, по крайней мере, поймать событие, когда что-то заблокированное «тронуто» пользователем?
Причина, по которой я нуждаюсь в этом, заключается в том, чтобы сделать индивидуальный JDialog-клик при возникновении такого события.
Я знаю, что с использованием нативной функции поймать такое событие может быть решением, но я не буду использовать его, поскольку он только добавит много беспорядка в код и сделает его незабываемым когда-нибудь - я предпочел бы сохранить его pure-java. –
hmm трудно. Как только вы выходите за пределы приложения, технически вы больше не находитесь в Java-мире. –
Не совсем, я просто щелкаю другую часть того же приложения Java - я упомянул, что мне нужно только ловить события, когда пользователь щелкает какую-то другую часть того же приложения, которое заблокировано диалогом, а не другое случайное приложение, запущенное в системе , –