我想在屏幕上突出显示一些元素,当选择PopupMenu中的一个JMenuItem时(鼠标悬停)。所以我在我的JMenuItem上使用MouseListener
@Override
public void mouseEntered(MouseEvent e) {
highlightOn();
}
@Override
public void mouseExited(MouseEvent e) {
highlightOff();
}
它工作正常,但是如果我按下Esc,弹出菜单将被关闭,而不会清除highligt。我如何拦截JPopupMenu的关闭来处理这个问题?
答案 0 :(得分:6)
这样的事情可以解决问题:
myPopupMenu.addPopupMenuListener(new PopupMenuListener {
public void popupMenuCanceled(PopupMenuEvent popupMenuEvent) {
highlightOff();
}
public void popupMenuWillBecomeInvisible(PopupMenuEvent popupMenuEvent) {
highlightOff();
}
public void popupMenuWillBecomeVisible(PopupMenuEvent popupMenuEvent) {}
}
请记住在使侦听器可见之前或在其构造函数内部添加侦听器。
答案 1 :(得分:5)
PopupMenuListener
更好的可能是
JMenuItem
(s)可以返回ButtonModel
,
ButtonModel
返回isRollover()
,isArmend()
,isPressed()
e.i。
JButtons JComponents
(JButton,JCheckBox,JRadioButton和JMenuXxx)中的每一个都实现了ButtonModel