【问题标题】:Reading Specific Text from a JTextField [duplicate]从 JTextField 中读取特定文本 [重复]
【发布时间】:2013-09-24 23:17:39
【问题描述】:

您好,我目前正在尝试创建一个电脑游戏\程序,它使用的主要内容是用户在 JTextField 中输入的命令。所以我已经设置了一个名为“问题”的基本文本字段 (JTextField question = new JTextField(15);) 在 JFrame 和 OK 按钮中输入文本。接下来是一个字符串“答案”。这是: 字符串答案 = question.getText().toUpperCase();

这就是该字段的设置方式。 Net 是 3 个 if 语句,如果没有输入文本,如果它不是正确的单词,当然还有正确的答案,则会给出错误。它们如下:

Public class ButtonListener extends ActionListener
{
     publix void actionPerformed(ActionEvent e)
     {
          if(e.getSource() == buttonOK)
          {
           String answer = question.getText().toUpperCase();

          if(answer.length() == 0)
          {
               JOptionPane.showMessageDialog(
                    Window.this,
                    "ERROR: NO INPUT",
                    "ERROR",
                    JOptionPane.INFORMATION_MESSAGE);
          }

          if(answer == "XENIX")
          {
               JOptionPane.showMessageDialog(
                    Window.this,
                    "Welcome, Sir",
                    "Greetings",
                    JOptionPane.INFORMATION_MESSAGE);
          }

          if(answer != "XENIX" && answer.length > 0)
          {
               JOptionPane.showMessageDialog(
                    Window.this,
                    "ERROR: INCORECT PASSWORD",
                    "ERROR",
                    JOptionPane.INFORMATION_MESSAGE);
          }

这是输入文本并按下确定按钮时 if 语句的反应方式。一切正常,但是当我输入“Xenix”时,它显示“错误:密码错误”。 “欢迎您,先生”消息永远不会显示,即使使用打印方法它表明它显然从答案中得到“XENIX”。为什么它不起作用?我应该使用另一种方法吗?请尽快回复!谢谢!

【问题讨论】:

  • 使用String#equals比较Strings
  • 对奇怪的布局感到抱歉。不知道为什么它发布得如此时髦。如果您对语法有任何疑问,请询问!
  • 布局已更正。请在编辑您的帖子时阅读帮助信息,该信息将解释如何确保显示您的代码格式。正如@Reimeus 所说,不要使用== 比较字符串,因为这只比较对象是否相同,这不是您感兴趣的。
  • 雷梅乌斯看起来怎么样?
  • @NicholasCreech:请点击 Mad 的链接。

标签: java swing actionlistener jtextfield


【解决方案1】:
if(question.getText() !=null && !question.getText().isEmpty())
{
    String answer = question.getText().toUpperCase();

    if(answer.length() == 0)
    {
        ------------------
        ------------------
    }   

    if(answer.equals("XENIX"))
    {
        ------------------
        ------------------
    }

    if((!answer.equals("XENIX")) && answer.length > 0)
    {
        ------------------
        ------------------
    }
}

【讨论】:

  • 您永远不应该将 String 与 == 进行比较。请改用equals(...) 方法。编辑:干杯。 ;)
  • Thnx @lzmaki 更新了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-13
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
相关资源
最近更新 更多