0

我有一种方法可以检查JTextField面板中的所有 sJPanel以查看它们是否为空,并遍历容器中的所有组件。在容器中,我有标签、文本字段和组合框。所以我可以验证前几个JTextFields,但是当我遇到第一个JComboBox<?>验证停止时,我似乎不明白为什么。以下是代码:-

private boolean validateInputFields(JPanel container) {
    for (Component comp : container.getComponents()) {

        if (comp instanceof JTextField) {
            JTextField temp = (JTextField) comp;
            if (temp.getText().trim().equals("")) {
                changeComponentProperties(temp);
                return true;
            } else{
                temp.setBackground(Color.WHITE);
                temp.setForeground(Color.BLACK);
            }
        }
    }

    return false;
}

任何帮助将不胜感激。

另请注意,这是在单击按钮(例如保存按钮)时调用的。

4

3 回答 3

1

所以我可以验证前几个JTextFields,但是当我遇到第一个JComboBox<?>验证停止时,我似乎不明白为什么

我怀疑情况是否如此。我认为当您第一次遇到JTextField带有空字符串作为上下文的 a 时,您的循环会停止。在这种情况下,您输入以下内容if

if (temp.getText().trim().equals("")) {
  changeComponentProperties(temp);
  return true;
}

并且该return语句使您退出循环。将其调整为以下应该可以解决问题

private boolean validateInputFields(JPanel container) {
   boolean result = false; 
   for (Component comp : container.getComponents()) {

        if (comp instanceof JTextField) {
            JTextField temp = (JTextField) comp;
            if (temp.getText().trim().equals("")) {
                changeComponentProperties(temp);
                result = true;
            } else{
                temp.setBackground(Color.WHITE);
                temp.setForeground(Color.BLACK);
            }
        }
    }
    return result;
}
于 2012-11-27T09:32:28.787 回答
0
private boolean validateInputFields(JPanel container) {
for (Component comp : container.getComponents()) {
if (!comp instanceof JTextField) {
continue;
}
else{
JTextField temp = (JTextField) comp;
if (temp.getText().trim().equals("")) {
changeComponentProperties(temp);
return true;
} else{
temp.setBackground(Color.WHITE);`enter code here`
temp.setForeground(Color.BLACK);
}
}
}
}
return false;
}
于 2012-11-27T09:13:48.707 回答
0

非常感谢所有做出贡献的人,您提供的所有解决方案都是有效且可行的,但在我的情况下,我发现了问题 - 问题是某些组件在屏幕上不可见,并且在通过获取的组件进行迭代时,它们也不包括在内,所以我添加了一个条件来检查组件的可见性状态,即comp.isVisible()

于 2013-03-23T00:56:15.280 回答