Поймать MouseEvent в окне, заблокированном модальным диалогом?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Поймать MouseEvent в окне, заблокированном модальным диалогом?

Сообщение Anonymous »

У меня есть JFrame, который открывает модальный JDialog. JFrame имеет довольно много кнопок, которые не должны использоваться, когда JDialog открыт ->, следовательно, модальный JDialog.
Однако при нажатии на область за пределами JDialog JDialog должен закрываться. Однако решение, которое я описываю ниже, не перехватывает никакие события MouseEvent в JFrame.
Теперь мне нужно выяснить, щелкнул ли пользователь по окну, но за пределами JDialog. Причина сделать это согласно комментарию: JDialog должен закрыться, как только пользователь щелкнет за его пределами!
На данный момент я лучше всего думаю создать AWTEventListener (как и в том, как получить координаты щелчка мыши за пределами моего окна в Java):

Код: Выделить всё

listener = new AWTEventListener() {
@Override
public void eventDispatched(AWTEvent event) {
if (!event.getSource().getClass().equals(ButtonDialog.class)
&& event.getID() == 502) {
ButtonDialog.this.dispose();
}
}
};
а затем добавьте его при открытии JDialog:

Код: Выделить всё

Toolkit.getDefaultToolkit().addAWTEventListener(
listener, AWTEvent.MOUSE_EVENT_MASK);
К сожалению, когда диалог модальный, за пределами этого диалога не происходит никаких событий AWT.
Я рассматривал возможность использования вместо этого GlassPane из JFrame, но это действительно кажется непрактичным. Могу ли я вообще перехватывать события в «модально заблокированном» окне? Или я на неверном пути?

Подробнее здесь: https://stackoverflow.com/questions/339 ... dal-dialog
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»