Java JMenuItem在左侧显示复选框,如何禁用它?
我正在构建一个下拉菜单,它位于程序菜单栏中,如果单击JButton,就会弹出一个jpopmpmenu。在JPOppMenu中有多个jMenuItem 但是,在每个JMenuItem旁边都会显示一个复选框!看起来是这样的: 我认为不应该,而且有明确的JCheckBoxMenuItem 有人知道为什么JMenuItem中会出现复选框,以及如何禁用/删除它吗 代码Java JMenuItem在左侧显示复选框,如何禁用它?,java,swing,checkbox,jmenuitem,Java,Swing,Checkbox,Jmenuitem,我正在构建一个下拉菜单,它位于程序菜单栏中,如果单击JButton,就会弹出一个jpopmpmenu。在JPOppMenu中有多个jMenuItem 但是,在每个JMenuItem旁边都会显示一个复选框!看起来是这样的: 我认为不应该,而且有明确的JCheckBoxMenuItem 有人知道为什么JMenuItem中会出现复选框,以及如何禁用/删除它吗 代码 ImageIcon icon = ViewUtilities.createIcon("resource/gui/mainMenu.png
ImageIcon icon = ViewUtilities.createIcon("resource/gui/mainMenu.png", _buttonLength);
setIcon(icon);
JMenuItem menuItem = new JMenuItem("New Whiteboard");
menuItem.addActionListener(new NewWhiteboardActionListener());
getMenu().add(menuItem);
menuItem = new JMenuItem("Open...");
menuItem.addActionListener(new OpenFileActionListener());
getMenu().add(menuItem);
menuItem = new JMenuItem("Preferences...");
menuItem.addActionListener(new PreferencesActionListener());
getMenu().addSeparator();
getMenu().add(menuItem);
menuItem = new JMenuItem("Exit");
menuItem.addActionListener(new ExitActionListener());
getMenu().addSeparator();
getMenu().add(menuItem);
其中getMenu()
返回一个jpopmpmenu
谢谢
干杯,朔
编辑:我已经修复了它。问题出在图书馆。我用过 用于定制选项卡式面板的LAF。它为弹出菜单注入了LAF 太长了,只要它是负载 因此,解决方案是将其设置为不加载菜单样式
LookAndFeelFactory.installJideExtension(
LookAndFeelFactory.VSNET_STYLE_WITHOUT_MENU);
LookAndFeelFactory.installJideExtension(
LookAndFeelFactory.VSNET_STYLE_WITHOUT_MENU);
问题出在图书馆。我用过
用于定制选项卡式面板的LAF。它为弹出菜单注入了LAF
太长了,只要它是负载
因此,解决方案是将其设置为不加载菜单样式
LookAndFeelFactory.installJideExtension(
LookAndFeelFactory.VSNET_STYLE_WITHOUT_MENU);
LookAndFeelFactory.installJideExtension(
LookAndFeelFactory.VSNET_STYLE_WITHOUT_MENU);
@基于此,zavie的解决方案是,当使用Jide在设置菜单之前执行以下操作时
LookAndFeelFactory.installDefaultLookAndFeel();
LookAndFeelFactory.installJideExtension();
此外,在Windows 7上,菜单栏的背景颜色与菜单项略有不同,解决方案是使用JideMenu而不是JMenu。图标可能来自您的外观?。。。您的外观如何?复选框是否有效?如果我想要这个功能,我可以把它放在
ActionListener
中。你提到的四个问题中有什么可疑的地方吗?张贴你的SSCCE()来演示问题。这将包括尝试前面建议的默认LAF。为了支持前面的评论者,您的LAF似乎正在使用JCheckBoxMenuItem UI来处理常规JMenuItem。我已经修复了它。SSCCE确实有帮助:)