我有一些组件,我想检查它们是否被填充。我的代码遍历添加到列表中的每个组件,将其转换为正确的类型,调用该getText
方法并检查它是否为空。如果它为空,则将布尔值设置为 false 并返回。根据布尔值,显示“Yay”(成功)或“Nay”(失败)。作为附加测试,我component.toString()
每次失败时都会打印出来。
现在的问题是:component.toString()
在每个组件都有文本的情况下调用每个方法。不管我的输入如何,布尔值仍然是成功的(即使某些字段中没有文本)。
在调试过程中,我发现我的任何组件在调试窗口 (Eclipse) 中都没有字段“Text”或“getText”或类似字段,这可能表明存在问题。
我找不到问题,有人可以指出我吗?
boolean success = checkInput();
if (success) {
System.out.println("Yay");
} else {
System.out.println("Nay");
}
check输入法
private boolean checkInput() {
boolean success = true;
List<Component> components = new ArrayList<Component>();
components.add(txtLeertrajectCode);
components.add(txtLeertrajectTitel);
components.add(txtOmschrijving);
components.add(txtDoelgroep);
for (Component comp : components) {
if (comp instanceof JTextField) {
String curr = ((JTextField) comp).getText().trim();
if ("".equals(curr)) {
System.out.println(comp.toString());
comp.setForeground(Color.RED);
success = false;
} else {
comp.setForeground(Color.BLACK);
}
} else if (comp instanceof JTextArea) {
String curr = ((JTextArea) comp).getText();
if ("".equals(curr)) {
System.out.println(comp.toString());
comp.setForeground(Color.RED);
success = false;
} else {
comp.setForeground(Color.BLACK);
}
}
}
return success;
}
}
输出:
javax.swing.JTextField[...]
javax.swing.JTextField[...]
javax.swing.JTextArea[...]
javax.swing.JTextField[...]
Yay
编辑:
问题解决了,显然我有两次我的文本字段,但在文件中使用了相似的名称。显然,检查是在未使用的文本字段上完成的。愚蠢的问题。