听众及其对象

时间:2012-06-05 18:15:48

标签: java swing awt jtextfield documentlistener

我有一个带有更改文本事件监听器的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("");
    }
}

2 个答案:

答案 0 :(得分:2)

JTextField事件更改textChanged中的文字可能会导致textChanged事件的(可能是无限的)循环。不要那样做。

如果您要验证JTextField的输入,请使用InputVerifier

javadoc包含some examples of how to use it,看看。

答案 1 :(得分:1)

  • 对于JTextComponent,您必须使用可以访问其Model

  • 的正确方法 {li>

    Document Model JTextComponent

从键盘输出你有两个选择

  • JTextComponent到外部(到Swing GUI中的另一个元素)的输出使用DocumentListener

  • changes / filtering / modifyJTextComponent内使用DocumentFilter