代码不按预期进行?

时间:2013-03-23 18:27:41

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

基本上我正在尝试检查其中一个textFields在单击“确定”按钮时是否为空白,如果它再次调用此方法但由于某种原因它永远不会进入代码片段检查是否textField是否为null,即使它为null,它每次都会直接跳过它:/任何人都可以解释原因吗?设置一个小时试图解决它并且无法找到原因:/谢谢,任何建议你可能有。

PS。如果在其中一个textField为空白时没有禁用“确定”按钮,请告诉我。

2 个答案:

答案 0 :(得分:1)

因为大多数喜欢tfNames[i].getText()会返回一个空字符串,而不是null

也许你应该检查一下:

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

答案 1 :(得分:1)

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

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

}

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