我在菜单栏中创建了一个菜单,我想在其中创建一个JCheckBoxMenuItem
来设置突出显示剩余菜单项的条件。
类似下面的伪代码:
if login(true)
then highlight remaining menuitems
else
un-highlight the menuitems
答案 0 :(得分:5)
我认为突出显示你的意思是启用/禁用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);
}
答案 1 :(得分:4)
使用setEnabled( boolean )
方法启用和禁用菜单项的方式与其他任何JComponent
相同
答案 2 :(得分:2)
创建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)
成功,就会在菜单上选中复选框,并启用其他菜单项。