2010-09-07 95 views
0

我正在建立一个下拉菜单,它位于程序菜单栏中,如果点击JButton,弹出一个JPopupMenu。在JPopupMenu中有多个JMenuItems。JMenuItem显示左侧的复选框,如何禁用它?

但是,除了每个JMenuItem,它都显示一个复选框!它看起来像这样:

alt text

我不认为它应该,并有明确的JCheckBoxMenuItem了点。

有谁知道为什么一个复选框出现在JMenuItem中,我该如何禁用/删除它?

代码

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()返回JPopupMenu

谢谢!

干杯,


编辑:我已经固定它。问题在于Jide库。我用它 为TabbedPanel的自定义LAF。并且它注入 LAF弹出式菜单 只要它加载。

所以解决方案太设置为不要加载菜单样式。

LookAndFeelFactory.installJideExtension(
    LookAndFeelFactory.VSNET_STYLE_WITHOUT_MENU); 
+0

也许图标来自你的外观和感觉?...你的外观和感觉是什么? – Istao 2010-09-07 08:11:16

+0

复选框有效吗?如果我不希望这个功能,我可能会把它放在一个'ActionListener'中。你提到的四件中有任何可疑的东西? – trashgod 2010-09-07 14:48:29

+1

张贴您的SSCCE(http://sscce.org)来证明问题。这将包括尝试早先建议的默认LAF。 – camickr 2010-09-07 14:59:17

回答

0

问题在于Jide库。我用它 为TabbedPanel的自定义LAF。并且它注入 LAF弹出式菜单 只要它加载。

所以解决方案太设置为不要加载菜单样式。

LookAndFeelFactory.installJideExtension(
    LookAndFeelFactory.VSNET_STYLE_WITHOUT_MENU); 
1

@zavie在此基础上jide forum topic的解决方案是,使用积德做instatiating你的菜单

LookAndFeelFactory.installDefaultLookAndFeel(); 
LookAndFeelFactory.installJideExtension(); 

此外,在Windows 7之前以下时,菜单栏将有一个稍微不同的背景颜色比菜单项目,解决方案是使用JideMenu而不是JMenu。