Java - 使用不同的帐户登录JButton时禁用

By simon at 2018-02-07 • 0人收藏 • 51人看过

我试图禁用一些JButton与不同的帐户(类似的东西 权限),这里是我的代码更清晰的问题...

try
    {
        stat = conn.prepareStatement(sql);
        rs=stat.executeQuery();
        while(rs.next())
        {
           System.out.println("found");
           String _name= rs.getString("name");
           String _pass = rs.getString("password");
           String _stat = rs.getString("status");
            if (_name == name && pass == _pass && _stat == "admin")
            {
                new SecondFrame().setVisible(true);//all buttons works as admin
            }  
            else if(_name == name && pass == _pass && _stat == "moderator")
            {
               SecondFrame ob = new SecondFrame();
               ob.admin_btn.setEnabled(false);//just user+moderator button works
            }
            else if(_name == name && pass == _pass && _stat == "user")
            {
                SecondFrame ob = new SecondFrame();

                ob.admin_btn.setEnabled(false);
                ob.moderator_btn.setEnabled(false);
                // just user button works
            }
        }           
    } 
    catch (SQLException SQLe)
    {
        System.out.println("not executed"+SQLe);
    }
...但我不能禁用这样的按钮(语法是错误的),有没有办法 使此按钮禁用按钮屁股? 感谢帮助

1 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

#1 \。字符串比较错误 你的主要错误是你在你的代码中将字符串与==进行比较。在 爪哇,这比较或者只能像基本类型一样正常工作

public void setButtonAccess (String pAccess) {
    user_button.setEnabled(false);
    moderator_btn.setEnabled(false);
    admin_btn.setEnabled(false);

    if (pAccess.equals("user")) {
        user_btn.setEnabled(true);
    } else if (pAccess.equals("moderator")) {
        user_btn.setEnabled(true);
        moderator_btn.setEnabled(true);
    } else if (pAccess.equals("admin")) {
        user_button.setEnabled(true);
        moderator_btn.setEnabled(true);
        admin_btn.setEnabled(true);
    } 
}
7,==7,boolean等等 _stat.equals("moderator")。==之所以不起作用是因为它比较了对象的 内存地址而不是内部值。 这是一个c颂歌你可以使用:
try {
    stat = conn.prepareStatement(sql);
    rs=stat.executeQuery();
    while(rs.next()) {
        System.out.println("found");
        String _name= rs.getString("name");
        String _pass = rs.getString("password");
        String _stat = rs.getString("status");
        if (_name.equals(name) && pass.equals(_pass) && _stat.equals("admin")) {
            new User().setVisible(true);//all buttons works as admin
        } else if(_name.equals(name) && pass.equals(_pass) && _stat.equals("moderator")) {
            SecondFrame ob = new SecondFrame();
            ob.admin_btn.setEnabled(false);//just user+moderator button works
        } else if(_name.equals(name) && pass.equals(_pass) && _stat.equals("user")) {
            SecondFrame ob = new SecondFrame();

            ob.admin_btn.setEnabled(false);
            ob.moderator_btn.setEnabled(false);
            // just user button works
        }
    }           
} catch (SQLException SQLe) {
    System.out.println("not executed"+SQLe);
}
#2 \。访问相关的问题 之后,你的代码可能仍然不起作用,因为你可能有访问我ssue。 检查您的SecondFrame类的按钮属性是否是public.如果 他们不是,你最好创建一个方法这将设置内启用 该类为你提供用户的访问权限。像这样的东西:
public void setButtonAccess (String pAccess) {
    user_button.setEnabled(false);
    moderator_btn.setEnabled(false);
    admin_btn.setEnabled(false);

    if (pAccess.equals("user")) {
        user_btn.setEnabled(true);
    } else if (pAccess.equals("moderator")) {
        user_btn.setEnabled(true);
        moderator_btn.setEnabled(true);
    } else if (pAccess.equals("admin")) {
        user_button.setEnabled(true);
        moderator_btn.setEnabled(true);
        admin_btn.setEnabled(true);
    } 
}
虽然使用一个enum会很适合这种情况。 但是要获得更多的信息,我建议阅读以下内容:   1. [Enu在Java中的类型](https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)   2. [switch语句](https://docs.oracle。COM / JavaSE的/教程/ JAVA / nutsandbolts / switch.html)

登录后方可回帖

Loading...