2

当 PopupMenu 中的一个 JMenuItem 被选中(鼠标悬停)时,我想突出显示屏幕上的一些元素。所以我在我的 JMenuItem 上使用 MouseListener

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

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

它工作正常,但如果我按 Esc,弹出菜单将被关闭,无需清理高亮。我如何拦截 JPopupMenu 的关闭来处理这个问题?

4

2 回答 2

6

这样的事情应该可以解决问题:

myPopupMenu.addPopupMenuListener(new PopupMenuListener {
  public void popupMenuCanceled(PopupMenuEvent popupMenuEvent) {
    highlightOff();
  }
  public void popupMenuWillBecomeInvisible(PopupMenuEvent popupMenuEvent) {
    highlightOff();
  }
  public void popupMenuWillBecomeVisible(PopupMenuEvent popupMenuEvent) {}
}

只需记住在使监听器可见之前或在其构造函数中添加监听器。

于 2012-07-19T14:35:14.473 回答
4

你看

  1. PopupMenuListener

更好的可能是

  1. JMenuItem(s) 可以退货ButtonModel

  2. ButtonModel返回isRollover(), isArmend(), isPressed()ei

  3. 每个JButtons JComponents(JButton、JCheckBox、JRadioButton 和 JMenuXxx)都实现了不同的方法ButtonModel

于 2012-07-19T14:22:41.843 回答