0

JTextFieldパネル内のすべてのsをチェックしてJPanel、それらが空であるかどうかを確認するメソッドがあり、コンテナー内のすべてのコンポーネントを反復処理しています。コンテナには、ラベル、テキストフィールド、コンボボックスがあります。JTextFieldしたがって、最初の数秒を検証することはできますが、最初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コンテキストとして空の文字列を初めて使用したときに、ループが停止すると思います。その場合、次のように入力します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 に答える