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();
}
}
基本上,我试图在单击“确定”按钮时检查其中一个文本字段是否为空,以及是否再次调用此方法,但由于某种原因,它从未进入代码段检查文本字段是否为空,即使为空,每次都会直接跳过它:/有人能解释为什么吗?设置一个小时试图找出它,但还没有找到它的原因:/谢谢,为您提供任何建议
另外,如果在一个或多个文本字段为空时无法禁用“确定”按钮,请告诉我
# 1 楼答案
这是因为文本永远不会为空,它将为空,所以只需将您的支票更改为:
如果使用低于1.6的sdk,则使用普通ole检查:
tfNames[i].getText().equals("")
# 2 楼答案
因为最有可能的是
tfNames[i].getText()
返回一个空字符串,而不是null
也许你应该检查一下: