0

我有一些组件,我想检查它们是否被填充。我的代码遍历添加到列表中的每个组件,将其转换为正确的类型,调用该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

编辑:

问题解决了,显然我有两次我的文本字段,但在文件中使用了相似的名称。显然,检查是在未使用的文本字段上完成的。愚蠢的问题。

4

2 回答 2

2

可能你应该改变这个:

} else {
    System.out.println("Yay");
}

} else {
    System.out.println("Nay");
}
于 2013-02-24T17:30:42.193 回答
0

我觉得一切都好。您有 JTextFiled 但它不包含文本(它只是空的)

更新

I write simple example
results = new JTextArea();
        System.out.println("First :" + results.getText());
        results.setText("Test");
        System.out.println("Second :" + results.getText());

和输出看起来像这样:

First :
Second :Test

那么您可能会在检查后将值插入文本字段吗???

于 2013-02-24T17:30:44.567 回答