Однако при нажатии на область за пределами 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();
}
}
};
Код: Выделить всё
Toolkit.getDefaultToolkit().addAWTEventListener(
listener, AWTEvent.MOUSE_EVENT_MASK);
Я рассматривал возможность использования вместо этого GlassPane из JFrame, но это действительно кажется непрактичным. Могу ли я вообще перехватывать события в «модально заблокированном» окне? Или я на неверном пути?
Подробнее здесь: https://stackoverflow.com/questions/339 ... dal-dialog
Мобильная версия