Ручка JPopupMenu закрыта
Я хочу выделить некоторые элементы на экране, когда выбран один JMenuItem в PopupMenu (наведите курсор мыши). Поэтому я использую MouseListener на моем JMenuItem с
@Override
public void mouseEntered(MouseEvent e) {
highlightOn();
}
@Override
public void mouseExited(MouseEvent e) {
highlightOff();
}
Это работает нормально, но если я нажму Esc, всплывающее меню будет закрыто, без очистки выделения. Как я могу перехватить закрытие JPopupMenu, чтобы справиться с этим?
2 ответа
Решение
Вы смотрите на
PopupMenuListener
лучше может быть
JMenuItem
(ы) может вернутьButtonModel
,ButtonModel
возвращаетсяisRollover()
,isArmend()
,isPressed()
йкаждый из
JButtons JComponents
(JButton, JCheckBox, JRadioButton и JMenuXxx) реализовали различные методы изButtonModel
Нечто подобное должно сработать:
myPopupMenu.addPopupMenuListener(new PopupMenuListener {
public void popupMenuCanceled(PopupMenuEvent popupMenuEvent) {
highlightOff();
}
public void popupMenuWillBecomeInvisible(PopupMenuEvent popupMenuEvent) {
highlightOff();
}
public void popupMenuWillBecomeVisible(PopupMenuEvent popupMenuEvent) {}
}
Просто не забудьте добавить прослушиватель, прежде чем сделать его видимым или внутри его конструктора.