我正在开发一个应用程序,我希望在用户登录系统后在屏幕顶部显示用户名。此外,我只需要在用户登录后启用五个JMenuItems。我使用以下代码并从成功登录If调用它,但它根本不会更改应用程序。
注意: - 用户名将显示在JFrame中,登录表单是JInternalFrame 所有JMenuItems也在JFrame
中obj2是为LoginModel类创建的对象,用于检索用户名
private String global_username="";
public String getGlobalUsername(){
return global_username;
}
我调用的方法是更改JMenuItems的状态并设置JLabel的值
public void disableMenues(){
mntmSupplierManagement.setEnabled(false);
mntmEmployeeManagement.setEnabled(false);
mntmStockManagement.setEnabled(false);
mntmReporting.setEnabled(false);
mntmTransaction.setEnabled(false);
userName.setText("Logged in as "+obj2.getGlobalUsername());
}
我在JInternalFrame(登录表单)中使用了以下代码,以便在用户登录后调用上述方法
if(username.equals(user)&&password.equals(pass)){
System.out.println("Logged into the system");
global_username=username;
accountType=acc;
updateView();
else{
System.out.println("Unsuccessful login");
updateView();
}
我还使用以下代码创建了JLabel
JLabel userName=new JLabel();
userName.setText("Logged in as "+obj2.getGlobalUsername());
这给了我一个NullPointerException,所以我把它改成了
userName.setText("Logged in as ");
任何帮助都得到了极大的赞赏
先谢谢所有人!!!
答案 0 :(得分:0)
我建议使用单个变量来跟踪用户是否已登录,然后适当地绑定组件
private boolean loggedIn = false;
public void disableMenues(){
mntmSupplierManagement.setEnabled(!loggedIn);
mntmEmployeeManagement.setEnabled(!loggedIn);
mntmStockManagement.setEnabled(!loggedIn);
mntmReporting.setEnabled(!loggedIn);
mntmTransaction.setEnabled(!loggedIn);
userName.setText("Logged in as "+obj2.getGlobalUsername());
}
我还建议在整个会话中跟踪LoginModel类
private LoginModel lm = null;
private void authenticate(String username, String password){
//check username password (database maybe)
//and return the LoginModel for the pair
lm = returnedLoginModel;
}
然后在JFrame中你所要做的就是
if(lm != null){
System.out.println("Logged into the system");
loggedIn = true;
updateView();
else{
System.out.println("Unsuccessful login");
loggedIn = false;
updateView();
}
请记住,您还必须跟踪退出
private void logout(){
lm = null;
}