java - 代码没有按预期执行?

标签 java swing jtextfield

public void testDialog()
    {
      JPanel myPanel = new JPanel();
      JTextField tfNames [] = new JTextField[getNumOfPlayers()];
      for(int i=0;i < getNumOfPlayers();i++)
      {
        tfNames[i] = new JTextField(20);
        myPanel.add(new JLabel("Player " + (i+1)));
        myPanel.add(tfNames[i]);
      }

      int result = JOptionPane.showConfirmDialog(null, myPanel,
               "Please Enter The Player Names", JOptionPane.OK_CANCEL_OPTION);

      playerNames = new String [getNumOfPlayers()];

       if(result == JOptionPane.OK_OPTION)
       {
            for(int i=0;i < getNumOfPlayers();i++)
            {
                if(tfNames[i].getText() == null)
                {
                    //NOT GETTING INSIDE HERE FOR ONE REASON OR ANOTHER
                    System.out.println("NULL FIELD" + i);
                    testDialog();
                }
                else
                {
                    playerNames[i] = tfNames[i].getText();
                    System.out.println(playerNames[i]);
                }
            }
       }
       else if (result == JOptionPane.CANCEL_OPTION)
       {
            numPlayersDialog();
       }
       else
       {
            numPlayersDialog();
       }
    }

基本上,我试图检查单击“确定”按钮时其中一个文本字段是否为空,以及是否再次调用此方法,但由于某种原因,它永远不会进入代码片段检查是否textField 是否为空,即使它为空,它每次都会直接跳过它:/任何人都可以解释为什么吗?设置了一个小时试图找出原因,但未能找到原因:/谢谢,您可能有任何建议。

PS。如果在多个文本字段之一为空白时无法禁用“确定”按钮,请告诉我。

最佳答案

因为tfNames[i].getText()很可能返回一个空字符串,而不是null

也许你应该检查一下:

if(tfNames[i].getText() != null && tfNames[i].getText().isEmpty()){
     // ...
}

关于java - 代码没有按预期执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15590492/

相关文章:

java - 在 Java 8 中使复杂方法可中断

java - 为什么Minecraft Forge在构建Gradle时会抛出 “method <init>()V not found”?

java - 为什么 MouseListener 不起作用?

java - 确定 JButton 是否已被按下

Java 第一个 GUI,两个类

java - 在 Eclipse 中运行批处理文件会填充未知目录

java - Websphere 7 MQueue : how to access queue depth from Java?

java - 即使我的类(class)是公开的,Intellij 也无法解析符号

java - 禁用时的 JTextField 常量文本

java - 如何设置向 JTextField 显示结果时间的计时器?