如何在netbeans中更改jframe的访问组件级别

时间:2014-01-23 13:59:04

标签: java swing oop netbeans netbeans-7

我正在尝试在我的java swing项目中使用用户管理级别。我想为只有管理员可以点击的用户禁用几个按钮。所以在我的项目中,我使用JFrame设计了我的主页。我有几个按钮叫做Stock,Invoice,Grn等。

Home

在每个按钮中,我使用属性==>将访问级别更改为“public”帘线==>变量修饰符。

Login

但在Home JFrame中,我无法将访问级别更改为“public”。
在我的登录框架中,当我以用户身份登录时,我想要编码,如下所示。但我仍然无法调用Home.hm.btnStock,因为我无法更改Home的用户级别。

在登录界面

LogToHome lh = new LogToHome();
public static Login log;

     private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {                                         
    lh.logHome(comboUn, jpass);
}

在LogToHome java类

        public void logHome(JComboBox combo, JPasswordField jpass) {
    if (combo.getSelectedItem().equals("--SELECT--")) {
        JOptionPane.showMessageDialog(null, "Select User name");
    } else if (jpass.getText().isEmpty()) {
        JOptionPane.showMessageDialog(null, "Insert your Password");
        jpass.grabFocus();
    } else {
        try {
            String un = combo.getSelectedItem().toString();
            String pass = new String(jpass.getPassword());
            ResultSet rs = new JDBC().getData("SELECT * FROM login WHERE un='" + un.trim() + "' AND pw='" + pass + "'");
            if (rs.next()) {

                JOptionPane.showMessageDialog(null, "Login OK");
                Login.log.setVisible(false);
                if (un == "user") {
                    Home.hm = new Home();
                    Home.hm.btnStock.setenabled(false);
                    Home.hm.setVisible(true);
                } else {
                    Home.hm = new Home();
                    Home.hm.setVisible(true);
                }

            } else {
                JOptionPane.showMessageDialog(null, "Enter valid user name or password");

                jpass.setText("");
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, this.getClass().getName() + " " + e);
        }
    }

}

}

1 个答案:

答案 0 :(得分:1)

  

“在我的登录框架中,当我以用户身份登录时,我想要编码,如下所示。但我仍然无法调用Home.hm.btnStock,因为我无法更改Home的用户级别。”

不要将字符串与==进行比较。使用equals()equalsIgnoreCase()

if (un == "user") 

应该是

if ("user".equals(un)) 

使用==,下面的情况将不正确

if (un == "user") {
      Home.hm = new Home();
      Home.hm.btnStock.setenabled(false);
      Home.hm.setVisible(true);

此行Home.hm.btnStock.setenabled(false);看起来也很可疑。除非您使用自定义setEnabled方法

,否则E应为setenabled