[code=Java]
min_cj = new JMenuItem("添加超级用户");//添加一般超级 
min_cj .addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent e){ 
min_cj .setEnabled(false); 
if (sign==1){ 
min_cj.setEnabled(false); 

else if (sign==2){ 
min_cj.setEnabled(true); 

SMA = new SuperManagerAdd(sign); 
SMA.jd.setVisible(true); 
System.out.println("sign3: "+sign); 


);[code] 
min_cj 是一个主窗体菜单栏的2级菜单,现在想通过一个sign(从登陆界面传来sign==2为超级管理员)来实现权限分类,但现在当sign==1时min_cj 仍然有效!怎么了??? 
注:用System.out.println(sign)测试过sign没有传递错误! 
跪求解答

解决方案 »

  1.   

    感觉你的逻辑有点乱,你的意思是,当sign == 1时,下面的代码不执行对吧,那在min_cj.setEnabled(false); 
    代码后加个 return;就可以了;
      

  2.   

    逻辑有问题,正常应该是使用一个类来对权限进行判断,设置MenuIten和Button的使能状态。你现在的情况是没有权限仍然是使能的,必须在点击都才能灰化。如果简单点,可以使用楼上的方案,给个提示后,return
      

  3.   

    min_cj.setEnabled(false); 
    肯定没问题。菜单一定会变灰。百试不爽。
      

  4.   

    关键是ActionListener是在MenuItem点击的时候触发,在展现的时候,MenuItem是使能的。只有在你点击的时候才会执行setEnabled=false
      

  5.   

    3楼说的不错,在窗口一加载就设置sign,并且你现在用事件响应来实现是不可以的,因为窗体现在不会变化了!