java - 非常奇怪的 Swing 错误

标签 java swing

我正在为我制作的游戏编写登录脚本。我目前正在检查所提供的信息以确保其有效。我遇到了一个问题,当我去检查 2 个文本字段是否具有相同的值时。当他们这样做时,他们做的与我想要的相反。

private void regAccConfEmailFieldFocusFocusLost(FocusEvent event) {
    if(regAccConfEmailField.getText() == regAccEmail.getText() && regAccConfEmail != null)
    {
        regAccConfEmailField.setBorder(new LineBorder(Color.green, 1, false));
        confEmail = true;
    }
    else
    {
        regAccConfEmailField.setBorder(new LineBorder(Color.red, 1, false));
        confEmail = false;
    }
}

private void regAccConfSecQFieldFocusFocusLost(FocusEvent event) {
    if(regAccConfSecQField.getText() == null)
    {
        regAccConfSecQField.setBorder(new LineBorder(Color.red, 1, false));
        secQuestion = false;
    }
    else
    {
        regAccConfSecQField.setBorder(new LineBorder(Color.green, 1, false));
        secQuestion = true;
    }
}  

这是我的代码,我需要知道为什么这些方法中的每一个都与给定的相反。

假设 regAccConfEmailField 和 regAccEmailField 都等于 hello@gmail.com 它将转到 if 语句而不是 else。如果需要,我可以提供更多代码。

最佳答案

这个声明有两个问题:

if (regAccConfEmailField.getText() == regAccEmail.getText() && regAccConfEmail != null)
  • 您应该首先检查 null,以便在 regAccConfEmailnull 时短路表达式
  • 还使用 String.equals 来比较 String 内容,而不是 == 运算符。 == 运算符用于比较对象引用,目前为您提供与您想要的相反的结果,因为 2 个字段的值将是不同的 String 对象。<

可以替换为

if (regAccConfEmail != null && regAccConfEmailField.getText().equals(regAccEmail.getText()))
  • 此外,regAccConfSecQField.getText() 永远不能是 JTextField 中的 null,因此替换

    if (regAccConfSecQField.getText() == null)

  if (regAccConfSecQField.getText().trim().isEmpty())
  • 最后,您使用的似乎是 FocusListener,它依赖于 FocusEvents 来执行验证。看看使用 DocumentListener用于触发对文档更改的验证。

关于java - 非常奇怪的 Swing 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077309/

相关文章:

java - Android Studio 1.0.2 Kickflip.io 短类型处理错误

java - 用于规范化(规范化但不仅仅是清理)电子邮件地址的库

java - Mongo 无法将 Hashmap 转换为 BasicDBObject

java - 在 JavaFX 2.2 中将数据添加到静态 ComboBox

java - JLayeredPane 中的组件重叠

Java Applet无法解析Json

java - 如何确定 JFrame 隐藏水平滚动条的最小宽度?

java - JPanel 不想聚焦所以 KeyAdapter 不起作用

java - 二维数组中的寻路算法

java - java中不兼容的类型