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");
}

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 回ありましたが、ファイル内に同様の名前が付けられていました。明らかに、チェックは使用されていないテキストフィールドで行われました。愚かな問題。

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 に答える