0

DocumentListener を実装するクラスがあります。

    public class MyListener implements DocumentListener{

            private JTextField textField;

            public MyListener(JTextField textField) {
                LOGGER.info("listener constructor");
                this.textField = textField;
            }
            @Override
            public void insertUpdate(DocumentEvent e) {
                LOGGER.info("insert update");
            }
            @Override
            public void removeUpdate(DocumentEvent e) {
                LOGGER.info("removeupdate");
            }
            @Override
            public void changedUpdate(DocumentEvent e) {
                LOGGER.info("CHANGED UPDATE");
            }   
}

DocumentListener をテキスト フィールドに追加しようとしましたが、プログラムを実行すると、ログ ステートメントが表示されません。

private JTextField createTextField() {

    JTextField tf = new JTextField(30);
    tf.setName("name");

    tf.getDocument().addDocumentListener(new MyListener(tf));

    return tf;
}

私のパネルはファイナルなので、それが関係しているかどうかはわかりません。GUIには複数のパネルがあります。

私が基本的にやろうとしているのは、ユーザーが JTextField に名前を入力したときに保存ボタンを有効にし、名前を消去すると保存ボタンを無効にすることです。\

考え?

4

2 に答える 2

1

あなたのコードを考えると、これがうまくいかない理由はありません。おそらく、ロガーのトレース レベルがより高いレベル (例: ERROR) に設定されており、出力が表示されていません。トレース レベルが少なくとも に設定されていることを確認しINFOます。

于 2013-10-30T15:49:19.003 に答える
1

もし

LOGGER.info("listener constructor"); 

が表示されない場合、情報レベルのメッセージを出力するようにロギングが正しく設定されていないことが示唆されます。LOGGER.info の代わりに System.out.println() を使用してコードを試したところ、期待どおりに機能しました。

于 2013-10-30T15:49:48.333 に答える