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

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

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

4

2 回答 2

1

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

也许你应该检查一下:

if(tfNames[i].getText() != null && tfNames[i].getText().isEmpty()){
     // ...
}
于 2013-03-23T18:30:22.950 回答
1

那是因为文本永远不会为空,它将为空,所以只需将您的检查更改为:

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

}

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

于 2013-03-23T18:30:43.590 回答