2016-05-27 2 views
1

Я добавил MouseMotionListener в свой JFrame для управления всеми сообщениями движения мыши, которые поступали со всех объектов в моем jframe, но когда я перемещаю мышь над JLayeredPane, сообщение не создается. Пожалуйста, помогите мне добавить центральный MouseMotionListener в моем JFrame, чтобы контролировать все сообщения от всех объектов в нем.Центральный MouseMotionListener в java

большое спасибо.

ответ

2

Вы должны использовать AWTEventListener для прослушивания всех сообщений AWT.

Следующий код показывает, как слушать мыши и ключевых событий:

long eventMask = AWTEvent.MOUSE_MOTION_EVENT_MASK 
    + AWTEvent.MOUSE_EVENT_MASK 
    + AWTEvent.KEY_EVENT_MASK; 

Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() 
{ 
    public void eventDispatched(AWTEvent e) 
    { 
     System.out.println(e.getID()); 
    } 
}, eventMask); 

См Global Event Listeners для получения дополнительной информации.

+0

Спасибо, но я использую качели, а не awt (в конце моего вопроса я добавил указатель поворота). – MicroSystem

+0

@MicroSystem, не имеет значения. Swing построен на AWT. Существует не такая вещь, как AWT MouseEvent и Swing MouseEvent. MouseEvent - это MouseEvent. – camickr

3

Ниже приведен код для рекурсивно добавления MouseMotionListener ко всем компонентам. Имейте в виду, что для обработки генерируемых MouseEvents вам необходимо использовать SwingUtilities для перевода Точки из пространства конкретного компонента в пространство JFrame.

public static void installMouseMotionListenerOnAll(Component c, MouseMotionListener mml) { 
    c.addMouseMotionListener(mml); 
    if (c instanceof Container) { 
    for (Component child : ((Container)c).getComponents()) { 
     installMouseMotionListenerOnAll(child, mml); 
    } 
    } 
} 
+0

В Java нет метода, который отображает все сообщения от всего компонента? (я имею в виду, что jframe содержит все объекты и может иметь центральное управление во всех сообщениях). – MicroSystem

+0

Что должно произойти, если подкомпонент JFrame также прослушивает событие, и его слушатель хочет сделать противоположное тому, что хочет сделать слушатель кадра? – FredK

+0

Я не знаю больше об этом, но я думаю, что суперкомпонент может * потреблять * массаж для дополнительного компонента (это не может вызвать проблемы). – MicroSystem

 Смежные вопросы

  • Нет связанных вопросов^_^