2015-05-14 1 views
0

В программном обеспечении, которое мы пишем, мы иногда используем GlassPane, чтобы пользователь не взаимодействовал с программой, пока он занят, это имеет непреднамеренный побочный эффект, определенных кнопок устанавливается, но не удаляется.Определите из AWTEvent, если это событие Mouse_Exited

Комплект рулона, активированное стекло, стеклопакет потребляет событие mouse_exit.

GlassPane зарегистрирован как:

Toolkit.getDefaultToolkit().addAWTEventListener(this, 
       AWTEvent.MOUSE_EVENT_MASK | AWTEvent.KEY_EVENT_MASK 
       | AWTEvent.MOUSE_MOTION_EVENT_MASK 
       | AWTEvent.MOUSE_WHEEL_EVENT_MASK); 

, как мы обнаружили, что нам нужно, чтобы поймать движения мыши и события колеса мыши тоже.

public void eventDispatched(AWTEvent event) { 
      if (event instanceof KeyEvent) { 
       ((KeyEvent)event).consume(); 
      } else if (event instanceof MouseEvent) { 
       ((MouseEvent) event).consume(); 
      } 
} 

Есть ли способ узнать в вышеуказанной точке кода, если событие произошло из события Mouse_Exit?

+1

Проверьте 'MouseEvent # getID' и сравните с ним' MouseEvent. MOUSE_EXITED' – MadProgrammer

+0

Спасибо, это именно то, что мне нужно было сделать, и это решило проблему красиво – Saquesh

ответ

0

Возможно, вы можете использовать подход Disabled Glass Pane. Он добавляет слушателей к GlassPane для перехвата событий.

В настоящее время код не используется MouseWheelListener, поэтому вам может потребоваться его добавить.