禁用JMenu流动

时间:2012-05-23 15:30:17

标签: jmenu jmenubar

在摆动一些小应用程序时我遇到了一个小问题。我有一个带有少量JMenus的JMenuBar,其中一些添加了MenuListeners,它们就像普通按钮一样(menuSelected打开一个对话框)。问题是,当我点击'普通'菜单并且JMenuItems列表展开然后将光标移到'buttony'菜单上时,MenuListener认为它被点击并且使用了适当的方法。如何禁用它?以下是清除自定义名称的代码的一部分:

 JMenuBar bar = new JMenuBar();

 addPlayerButton = new JMenu("Button");

 addPlayerButton.addMenuListener(new MenuListener() {

     @Override
     public void menuSelected(MenuEvent e) {
         addPlayerButton.setSelected(false);
         //here comes my method to show custom dialog
     }

     @Override
     public void menuDeselected(MenuEvent e) {
     }

     @Override
     public void menuCanceled(MenuEvent e) {
     }
 });

 bar.add(addPlayerButton);

 JMenu menu = new JMenu("Menu");
 bar.add(menu);

2 个答案:

答案 0 :(得分:0)

我认为您可以使用actionListener而不使用MenuListener,当鼠标位于menuItem上时,会发生menuSelected调用。我不确定,但请尝试。

答案 1 :(得分:0)

也许我以过于复杂的方式呈现它。

想象一下,你有一个带有MenuBar的框架和两个菜单。您单击其中一个并显示其内容。现在,您将光标移到第二个菜单上,然后在第二个菜单打开时关闭。我只想在这种情况下不要打开。