Обнаружение события перемещения мыши на JPanel

У меня есть JPanel, который я хотел бы обнаружить следующие события

(1) Когда мышь приближается

(2) Когда мышь двигается

(1) быстро легко. (2) немного сложно. В настоящее время мне нужно зарегистрировать событие во всех компонентах вокруг JPanel. Если сосед вокруг JPanel обнаружил движение мыши в событии, это также означает, что JPanel имеет (2) ситуацию. Тем не менее, это довольно грязный способ, поскольку в будущем я добавлю новые компоненты, этот грязный обходной путь сломается.

Другой метод — использовать таймер для мониторинга JPanel. Если позиция мыши не находится внутри JPanel в течение x секунд, я могу считать, что JPanel имеет событие перемещения мыши.

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

Есть ли лучший способ, который может предоставить платформа Java?


person Cheok Yan Cheng    schedule 14.05.2009    source источник


Ответы (1)


Пусть ваш класс реализует MouseListener и добавляет его в качестве прослушивателя мыши на самой внешней панели. Вы должны получить событие входа мыши, когда мышь перемещается по панели, и событие выхода мыши, когда она уходит; независимо от того, какие компоненты содержит панель.

Из JavaDoc:

void mouseEntered(MouseEvent e) Вызывается, когда мышь входит в компонент.

void mouseExited(MouseEvent e) Вызывается, когда мышь выходит из компонента.

person Lawrence Dol    schedule 14.05.2009