有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java代码没有按它应该做的那样做?

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();
       }
    }

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

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


共 (2) 个答案

  1. # 1 楼答案

    这是因为文本永远不会为空,它将为空,所以只需将您的支票更改为:

    if (tfNames[i].getText().isEmpty()) {
    
    }
    

    如果使用低于1.6的sdk,则使用普通ole检查:tfNames[i].getText().equals("")

  2. # 2 楼答案

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

    也许你应该检查一下:

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