如何防止被禁用的JMenuItem在被点击时隐藏菜单?

Bra*_*rad 6 java swing jpopupmenu jmenuitem

在我的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." );
}
Run Code Online (Sandbox Code Playgroud)

Alb*_*dez 0

这已经过测试并且有效。

外观和感觉决定如何处理禁用菜单项上的鼠标事件。无论如何,您可以使用自定义的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);
    }
}
Run Code Online (Sandbox Code Playgroud)

首先,调整代码以满足您的需求(可选)。
最后,any替换JMenuItemCustomMenuItem.

就是这样!