0

テキスト変更イベントのリスナーを持つ JTextField があります。

このリスナーを使用して、リッスンしている同じオブジェクトに影響を与えることはできますか? たとえば、「問題のある」変更を検出した場合、同じ JTextField オブジェクト内のすべてのテキストを削除する必要があります。

これは可能ですか?うまくいかないようです...

例は次のとおりです。

this.txtSearch.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
    validate();
}

public void removeUpdate(DocumentEvent e) {
    validate();
}

public void insertUpdate(DocumentEvent e) {
    validate();
}

private void validate(){
    if not_good(txtSearch.getText()) {
        txtSearch.setText("");
    }
}
4

2 に答える 2

2

JTextFieldイベントからテキストを変更すると、textChangedイベントの (おそらく無限の) ループが発生する可能性がありtextChangedます。そんなことしたらダメ。

入力を検証したい場合は、JTextFieldかなり使用しますInputVerifier

javadoc には、使用方法の例がいくつか含まれています。

于 2012-06-05T18:26:51.620 に答える
1
  • JTextComponentにアクセスできる適切な方法を使用する必要があるためです。Model

  • DocumentですModel_JTextComponent

キーボードからの出力には、2 つの選択肢があります

  • 外部からの出力JTextComponent(Swing GUI の別の要素への出力) には、次を使用します。DocumentListener

  • for changes/ filtering/modify内部JTextComponentで使用するDocumentFilter

于 2012-06-05T18:34:12.360 に答える