【发布时间】:2013-11-24 18:46:59
【问题描述】:
您好,我有以下代码:
AbstractDocument d = (AbstractDocument)editorText.getDocument();
d.setDocumentFilter(new myFilter());
其中 editorText 是一个 JTextArea。我的 DocumentFiler 定义如下:
private class myFilter extends DocumentFilter{
public void insertString(DocumentFilter.FilterBypass fb,
int offset,
String string,
AttributeSet attr){
System.out.print("insert invoked");
try {
super.insertString(fb, offset, "; You inserted the string: "+string, attr);
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void replace(DocumentFilter.FilterBypass fb,
int offset,
String string,
AttributeSet attr){
System.out.print("replace invoked");
try {
super.insertString(fb, offset, "; You inserted the string: "+string, attr);
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我希望代码按如下方式工作:如果键入了一个字符,那么预期的是 insertString 函数必须触发,并且必须在屏幕上看到的是 ;you insert the string: 。不是这种情况。我应该怎么做才能让程序在每个按下的字符上触发并处理它并显示在屏幕上?
【问题讨论】:
-
添加一个SSCCE,它必须是在一些基本的东西不起作用的情况下
标签: java swing jtextarea documentfilter