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