如何在桌面应用程序中禁用菜单项?

Gau*_*sad 1 java swing disabled-control jmenu

我在菜单栏中创建了一个菜单,我想创建一个菜单JCheckBoxMenuItem来设置突出显示剩余菜单项的条件.

像下面的伪代码:

if login(true)
    then highlight remaining menuitems
else
    un-highlight the menuitems
Run Code Online (Sandbox Code Playgroud)

Hei*_*bug 5

我认为突出显示你的意思是启用/禁用JMenuItem.那是可能的.

使用setEnabled:

JMenuItem item;
item.setEnabled(false); //to disable
Run Code Online (Sandbox Code Playgroud)

像kleopatra建议的那样,最好的方法是为每个JMenuItem实现自己的操作,然后让你的动作根据状态启用/禁用按钮:

例如:

public class AMenuAction extends AbstractAction {

      @override
      public void actionPerformed(ActionEvent e) {
           //implement your action behavior here
      }

}
Run Code Online (Sandbox Code Playgroud)

然后用这样的动作构造你的JMenuItem:

AMenuAction afterLoginAction = new AMenuAction();
JMenuItem item = new JMenuItem(afterLoginAction );
Run Code Online (Sandbox Code Playgroud)

当用户登录/注出所需动作时调用setEnabled方法.

void Login()
{
    afterLoginAction.setEnabled(true); 
}
Run Code Online (Sandbox Code Playgroud)