我正在尝试在我的java swing项目中使用用户管理级别。我想为只有管理员可以点击的用户禁用几个按钮。所以在我的项目中,我使用JFrame设计了我的主页。我有几个按钮叫做Stock,Invoice,Grn等。
在每个按钮中,我使用属性==>将访问级别更改为“public”帘线==>变量修饰符。
但在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);
}
}
}
}
答案 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
。