我的窗口是一个登录表单,其中包含2个文本字段(用于用户名和密码)和1个按钮(登录按钮)。
我使用NetBeans来帮助我设计窗口,这是登录按钮的actionPerformed方法:
private void loginButtonActionPerformed(ActionEvent evt)
{
String password = new String(this.passwordField.getPassword());
if (this.userNameTextField.getText() == "system" && password == "admin")
{
JOptionPane.showMessageDialog(null, "good");
}
}
我调试了应用程序,因为登录按钮什么都没做,我发现if句子甚至没有读过。 但是,如果我删除if句子并按下登录按钮,则会显示该消息。
我做错了什么?
答案 0 :(得分:3)
您正在使用==运算符比较字符串,这是错误的。
请我们:
string1.equals(string2);
相关示例:
password.equals("admin");
答案 1 :(得分:2)
字符串应与equals进行比较:
this.userNameTextField.getText().equals("system")
这将比较字符串中的文字 你现在正在做的是引用的比较(即字符串在内存中的位置)
正如评论中所提到的:在ActionListener中使用JOptionPane.showMessageDialog(null, "good");
是一个坏主意,因为它会阻止整个GUI线程