java 句柄JPopupMenu已关闭

kmbjn2e3  于 2023-01-29  发布在  Java
关注(0)|答案(2)|浏览(153)

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

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

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

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

amrnrhlw

amrnrhlw1#

类似下面这样的东西应该可以做到:

myPopupMenu.addPopupMenuListener(new PopupMenuListener() {

     @Override
     public void popupMenuCanceled(final PopupMenuEvent e) {
         highlightOff();
     }

     @Override
     public void popupMenuWillBecomeInvisible(final PopupMenuEvent e) {
         highlightOff();
     }

     @Override
     public void popupMenuWillBecomeVisible(final PopupMenuEvent e) { }
}

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

sqserrrh

sqserrrh2#

你看

  1. PopupMenuListener
    更好的是
  2. JMenuItem(s)可以返回ButtonModel
  3. ButtonModel返回isRollover()isArmend()isPressed()
    1.每个JButtons JComponents(JButton、JCheckBox、JRadioButton和JMenuXxx)实现的方法与ButtonModel不同

相关问题