在我的Java swing应用程序中,我已经注意到,当我单击JPopupMenu中禁用的JMenuItem时,它会隐藏菜单,但是我不想隐藏它,就好像没有单击任何东西一样。有办法防止这种情况吗?
-----------------------------------> 更新:添加了代码示例:
JMenuItem saveMenuItem = new JMenuItem();
saveMenuItem.setEnabled(false);
saveMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveMenuItemActionPerformed();
}
});
add(saveMenuItem);
private void saveMenuItemActionPerformed() {
System.out.println( "Save clicked." );
}
最佳答案
这已经过测试并且可以工作。
外观决定如何处理禁用菜单项上的鼠标事件。无论如何,您可以使用自定义MenuItem
来拦截不需要的事件。只需使用该代码(复制/粘贴):
public class CustomMenuItem extends JMenuItem {
public CustomMenuItem(String text) {
super(text);
}
public CustomMenuItem() {
super();
}
protected void processMouseEvent(MouseEvent e) {
if (isEnabled()) super.processMouseEvent(e);
}
}
首先,修改代码以适合您的需求(可选)。
最后,用
JMenuItem
替换任何CustomMenuItem
。而已!