入力されているかどうかを確認したいコンポーネントがいくつかあります。私のコードは、リストに追加されたすべてのコンポーネントを反復し、正しい型にキャストし、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");
}
checkInput メソッド
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
編集:
問題は解決しました。どうやら、テキストフィールドが 2 回ありましたが、ファイル内に同様の名前が付けられていました。明らかに、チェックは使用されていないテキストフィールドで行われました。愚かな問題。