我有一个带有更改文本事件监听器的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("");
}
}
答案 0 :(得分:2)
从JTextField
事件更改textChanged
中的文字可能会导致textChanged
事件的(可能是无限的)循环。不要那样做。
如果您要验证JTextField
的输入,请使用InputVerifier
。
javadoc包含some examples of how to use it,看看。
答案 1 :(得分:1)
对于JTextComponent
,您必须使用可以访问其Model
Document
Model
JTextComponent
从键盘输出你有两个选择
从JTextComponent
到外部(到Swing GUI中的另一个元素)的输出使用DocumentListener
changes
/ filtering
/ modify
在JTextComponent
内使用DocumentFilter