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

  • DocumentModel为了JTextComponent

对于键盘输出,您有两个选择

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

  • for changes//里面使用filtering_modifyJTextComponentDocumentFilter

于 2012-06-05T18:34:12.360 回答