【问题标题】:Why label.equals(label1) code doesn't sees label1? [closed]为什么 label.equals(label1) 代码看不到 label1? [关闭]
【发布时间】:2021-02-14 01:51:23
【问题描述】:

我的代码有什么问题?我正在从 JTextField passwordField/nickNameField 输入到 fieldNickname/fieldPassword 并用于我的 registerAction。我已经搜索了答案,但找不到。

我的代码输入昵称和密码,然后要求输入昵称和密码。如果为真,则在登录部分再次要求输入昵称和密码。

我知道问题的根源,但不知道该怎么做。该代码必须毫无问题地工作..

问题来源:

else if (trueNickname.equals(fieldNickname) && truePassword.equals(fieldPassword)) 

我的代码(注册部分):

JLabel trueNickname = new JLabel("null");
JLabel truePassword = new JLabel("null");
JLabel fieldNickname = new JLabel (nickNameField.getText());
JLabel fieldPassword = new JLabel (passwordField.getText());

public void registerAction(ActionEvent e){
if (a == 0) {
    trueNickname.setText(nickNameField.getText());
    truePassword.setText(passwordField.getText());
    result.setText("Write your Nickname and Password again.");
    a = a + 1;
}
else if (trueNickname.equals(fieldNickname) && truePassword.equals(fieldPassword)) {
    result.setText("True Nickname and Password. You can login.");
}
else if (a == 1) {
    result.setText("SKIPPED(a = 1)");
}

}

在启动和使用代码时,结果是“跳过”。

注意:我是 stackoverflow 的新手,如果我做错了什么,请见谅。

【问题讨论】:

  • 您是在比较标签本身,而不是其中的任何文本。
  • 你为什么要检查一个 JLabel 是否等于另一个?这个问题和代码让我感到困惑。您不想比较他们持有的文字吗?
  • 如果我尝试直接使用,我会在不可转换类型 'JLabel' 和 'String' 的对象之间收到此错误“'equals'”
  • 并且标签没有常量文本。它随输入而变化
  • 'equals' 在不可转换类型 'JLabel' 和 'String 的对象之间 - 很抱歉,但消息不是很清楚吗?如何比较 JLabel 和字符串?它们是不同的对象。您需要获取标签的文本并将其与字符串进行比较。

标签: java swing jlabel equals jtextfield


【解决方案1】:

要比较标签上的文字,您可以使用trueNickname.getText().equals(fieldNickname.getText())

equals 方法是一个常见的陷阱,因为它将Object 作为参数。所以编译器允许你比较任何对象,即使它是一个无意义的比较。

【讨论】:

  • 哦.. 谢谢我明白了。我是java新手,谢谢帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2022-01-15
  • 2017-11-03
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
相关资源
最近更新 更多