Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 非常奇怪的摆动错误_Java_Swing - Fatal编程技术网

Java 非常奇怪的摆动错误

Java 非常奇怪的摆动错误,java,swing,Java,Swing,我正在为我制作的游戏编写登录脚本。我目前正在检查提供的信息,以确保其有效性。我遇到了这样一个问题:当我去检查两个文本字段是否具有相同的值时。当他们这样做的时候,他们做的和我希望它做的相反 private void regAccConfEmailFieldFocusFocusLost(FocusEvent event) { if(regAccConfEmailField.getText() == regAccEmail.getText() && regAccConfEmai

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

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检查,以便在regAccConfEmail为null时使表达式短路 还可以使用String.equals来比较字符串内容,而不是==运算符。==运算符用于比较对象引用,并且当前为您提供了与所需相反的结果,因为这两个字段中的值将是不同的字符串对象。 你可以用

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

如果regAccConfSecQField.getText==null

最后,您似乎正在使用FocusListener,它依赖FocusEvents来执行验证。请看一下如何使用触发文档更改验证。
该声明有两个问题:

if (regAccConfEmailField.getText() == regAccEmail.getText() && regAccConfEmail != null)
您应该首先进行null检查,以便在regAccConfEmail为null时使表达式短路 还可以使用String.equals来比较字符串内容,而不是==运算符。==运算符用于比较对象引用,并且当前为您提供了与所需相反的结果,因为这两个字段中的值将是不同的字符串对象。 你可以用

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

如果regAccConfSecQField.getText==null

最后,您似乎正在使用FocusListener,它依赖FocusEvents来执行验证。请看一下如何使用触发文档更改验证。
啊,好吧,我对这个还是有点陌生。我目前是高中编程专业的二年级学生。谢谢!如果regAccConfEmailField.getText返回null,则边框仍将变为绿色。这是非常wierd,这是从来没有发生在我身上。更新工作!非常感谢=D,使用DocumentListener而不是Whatevera好的,我对这方面还是有点陌生。我目前是高中编程专业的二年级学生。谢谢!如果regAccConfEmailField.getText返回null,则边框仍将变为绿色。这是非常wierd,这是从来没有发生在我身上。更新工作!非常感谢=D,使用DocumentListener而不是其他任何东西