我在菜单栏中创建了一个菜单,我想在其中创建一个
JCheckBoxMenuItem
来设置突出显示剩余菜单项的条件。
类似下面的伪代码:
if login(true)
then highlight remaining menuitems
else
un-highlight the menuitems
我认为突出显示您的意思是启用/禁用 JMenuItem。这是可能的。
使用setEnabled:
JMenuItem item;
item.setEnabled(false); //to disable
就像 kleopatra 所建议的那样,最好的方法是为每个 JMenuItem 实现您自己的操作,并让您的操作根据状态启用/禁用按钮:
例如:
public class AMenuAction extends AbstractAction {
@override
public void actionPerformed(ActionEvent e) {
//implement your action behavior here
}
}
然后用这样的操作构造你的 JMenuItem:
AMenuAction afterLoginAction = new AMenuAction();
JMenuItem item = new JMenuItem(afterLoginAction );
当用户登录/退出时,调用 setEnabled 方法执行所需的操作。
void Login()
{
afterLoginAction.setEnabled(true);
}
创建一个
JCheckBoxMenuItem
作为用户登录菜单项
JCheckBoxMenuItem jCheckBoxMenuItem = new JCheckBoxMenuItem();
然后
为其添加动作监听器
//unhighlite other menu items before login
jMenuFileOpen.setEnabled(false);
//...
jCheckBoxMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if (login(true)){
jCheckBoxMenuItem.setSelected(true);
//highlite other menu items
jMenuFileOpen.setEnabled(true);
//...
} else {
jCheckBoxMenuItem.setSelected(false);
//unhighlite other menu items
jMenuFileOpen.setEnabled(false);
//...
}
}
});
一旦
login(true)
成功,菜单上的复选框就会被选中,并且其他菜单项将被启用。