【问题标题】:Handle JPopupMenu closed处理 JPopupMenu 关闭
【发布时间】:2012-07-19 14:11:30
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java swing jpopupmenu jmenuitem jpopup


    【解决方案1】:

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

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

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

    【讨论】:

    • +1 用于 PopupMenuListener,顺便说一句,JMenuXxx 有自己的另一个监听器,PopupMenuListener 这不适用于突出显示的特定 JMenuItem.... 或取消选择
    【解决方案2】:

    你看

    1. PopupMenuListener

    可能会更好

    1. JMenuItem(s) 可以返回ButtonModel

    2. ButtonModel 返回isRollover()isArmend()isPressed() e.i.

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 2012-01-20
      • 2020-01-27
      • 1970-01-01
      相关资源
      最近更新 更多