Ручка JPopupMenu закрыта

Я хочу выделить некоторые элементы на экране, когда выбран один JMenuItem в PopupMenu (наведите курсор мыши). Поэтому я использую MouseListener на моем JMenuItem с

        @Override
        public void mouseEntered(MouseEvent e) {
            highlightOn();
        }

        @Override
        public void mouseExited(MouseEvent e) {
            highlightOff();
        }

Это работает нормально, но если я нажму Esc, всплывающее меню будет закрыто, без очистки выделения. Как я могу перехватить закрытие JPopupMenu, чтобы справиться с этим?

2 ответа

Решение

Вы смотрите на

  1. PopupMenuListener

лучше может быть

  1. JMenuItem(ы) может вернуть ButtonModel,

  2. ButtonModel возвращается isRollover(), isArmend(), isPressed() й

  3. каждый из 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) {}
}

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

Другие вопросы по тегам