我正在使用BlueJ,并且有两个类。
public class mainMenu extends JFrame
{
ArrayList<String> one=new ArrayList<String>();
ArrayList<String> zero=new ArrayList<String>();
public static void main(String[] args){
mainMenu m=new mainMenu();
}
public mainMenu(){
JPanel p=new JPanel();
JTextField idOne=new JTextField(4);
DocumentFilter fOne=new LengthFilter();
idOne.getDocument().setDocumentFilter(fOne);
}
}
和
class LengthFilter extends DocumentFilter{
private int max=4;
public void insertString(DocumentFilter.FilterBypass fb, int offset,String text, AttributeSet attr) throws BadLocationException {
if (fb.getDocument().getLength() + text.length() <= max){
fb.insertString(offset, text, attr);
}else {
Toolkit.getDefaultToolkit().beep();
}
}
public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
String text, AttributeSet attr) throws BadLocationException {
if (fb.getDocument().getLength() + text.length() - length <= max){
fb.replace(offset, length, text, attr);
}else {
Toolkit.getDefaultToolkit().beep();
}
}
}
当我尝试编译第一类时,它会出现编译器错误:
找不到符号-方法setDocumentFilter(javax.swing.text.DocumentFilter)
为什么以及如何解决此问题?
最佳答案
对于setDocumentFilter
类,未定义Document
。你需要
DocumentFilter filter = new LengthFilter();
((AbstractDocument)idOneTextField.getDocument()).setDocumentFilter(filter);