【问题标题】:Parse JPasswordField result [duplicate]解析 JPasswordField 结果 [重复]
【发布时间】:2014-05-04 09:28:55
【问题描述】:

我是 Java 的新手,所以我什至不知道我是否正确执行此操作,但我创建了一个带有文本字段、密码字段和按钮的 GUI。我在按钮上有一个事件监听器。当它被按下时,监听器将检查名称和密码字段,但它目前没有按预期工作。

事件代码:

public class event implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent arg) {
        String name = textfield.getText();
        char[] temp_pass = password.getPassword();
        String pass = new String(temp_pass);

        if (name == "Spedwards" && pass == "test") {
            result.setText("Welcome Liam");
        } else {
            result.setText("Unknown User");
        }
    }
}

我理解这一点的方式是,它从文本字段和密码字段中获取文本,然后检查它是否分别等于 Spedwardstest,然后为我在 GUI 上的标签设置文本.但是,目前它只将文本设置为Unknown User,无论是否输入正确的信息。

为什么要这样做,我怎样才能正确获得我需要的值?

【问题讨论】:

  • 使用 str1.equals(str2) 比较字符串。
  • @ZouZou 谢谢。
  • @XingFei 我完全忘记了 Java 有 .equals() 方法。我已经习惯了只有 == 的 Javascript
  • 密码字段不返回字符串是有原因的,你不应该把字符数组变成字符串,这是一个安全漏洞
  • @MadProgrammer 我现在只是在学习。如果我真的发布过产品,我肯定不会这样做。

标签: java swing jframe comparison jpasswordfield


【解决方案1】:

正如在 cmets 中已经提到的。 比较字符串的安全方法是使用 String.equals() 方法

换行

if (name == "Spedwards" && pass == "test") {

if ("Spedwards".equals(name) && "test".equals(pass)) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 2014-02-10
    • 2017-11-23
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2015-09-15
    相关资源
    最近更新 更多