处理JPopupMenu关闭

Avr*_*gon 2 java swing jpopupmenu jmenuitem jpopup

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

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

        @Override
        public void mouseExited(MouseEvent e) {
            highlightOff();
        }
Run Code Online (Sandbox Code Playgroud)

它工作正常,但如果我按Esc弹出菜单将关闭,而不清理highligt.我如何拦截JPopupMenu的关闭来处理这个问题?

tuc*_*uxi 6

像这样的东西应该做的伎俩:

myPopupMenu.addPopupMenuListener(new PopupMenuListener {
  public void popupMenuCanceled(PopupMenuEvent popupMenuEvent) {
    highlightOff();
  }
  public void popupMenuWillBecomeInvisible(PopupMenuEvent popupMenuEvent) {
    highlightOff();
  }
  public void popupMenuWillBecomeVisible(PopupMenuEvent popupMenuEvent) {}
}
Run Code Online (Sandbox Code Playgroud)

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