我最近开始学习Java,所以我决定进行简单的注册/登录。
private JTextField username;
private JPasswordField password;
private JButton check;
private JButton addToDb;
ArrayList<String> dbUser = new ArrayList<String>();
ArrayList<String> dbPassword = new ArrayList<String>();
public trial(){
super("Title");
setLayout(new FlowLayout());
username = new JTextField("",10);
password = new JPasswordField("",10);
check = new JButton("Login");
addToDb = new JButton("Sign Up");
add(username);
add(password);
add(check);
add(addToDb);
addToDb.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
if(!username.getText().isEmpty()
&& !password.getText().isEmpty()){
dbUser.add(username.getText());
dbPassword.add(password.getText());
username.setText("");
password.setText("");
System.out.println(dbUser + "/" + dbPassword);
}else{
System.out.println("Please fill the fields and try again!");
}
}
}
);
check.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
for(int i=0; i<dbUser.size();i++){
if(username.getText() == dbUser.get(i) && password.getText()== dbPassword.get(i)){
JOptionPane.showMessageDialog(null, "Access Granted!");
}else{
JOptionPane.showMessageDialog(null, "Access Denied!");
}
break;
}
}
}
);
}
}
正如你所看到的,我已经创建了两个文本字段(用户名和密码),两个按钮,一个用于将值存储在两个不同的arraylists中(我尝试使用HashMap但是也没有用)。并且将数组中的值与文本字段中的值进行比较。问题是,当我使用登录按钮时,它总是说拒绝访问。任何想法如何解决这个问题?
答案 0 :(得分:0)
如果你想比较Strings使用equals方法,==
将比较地址
所以改变
if(username.getText() == dbUser.get(i) && password.getText()== dbPassword.get(i))
到
if(username.getText().equals(dbUser.get(i)) && password.getText().equals(dbPassword.get(i)))
答案 1 :(得分:0)
在java String
中,将equals
与==
进行比较。原因是,字符串是对象而不是基元。有关==
和equals()
所以if
表达式错误:
username.getText().equals(dbUser.get(i)) && password.getText().equals( dbPassword.get(i))