我正在为我的类添加一些自定义侦听器,但文档事件未触发。为什么呢?
public class MyClass{
MyCustomListener mcl = new MyCustomListener();
for(int i = 0; i < MAX; i++) {
getTxt_ppu().add(new CustomTextField(40));
getTxt_ppu().get(i).getDocument().addDocumentListener(mcl);
getTxt_ppu().get(i).addFocusListener(mcl);
}
//...Some code....
private class MyCustomListener implements DocumentListener, FocusListener, Serializable {
int index;
@Override
public void focusGained(FocusEvent e) {
System.out.println("Focus");
}
@Override
public void focusLost(FocusEvent e) {
}
@Override
public void insertUpdate(DocumentEvent e) {
System.out.println("a");
}
@Override
public void removeUpdate(DocumentEvent e) {
}
@Override
public void changedUpdate(DocumentEvent e) {
}
}
}
当执行并点击我的CustomTextField
时,它会在控制台“Focus”中显示,但是当我在文本字段中输入内容时,“a”从不打印。
当我在insertUpdate
方法中输入内容时,eclipse在底部显示一个红色的msg,表示
“MyClass.MyCustomListener类型的方法insertUpdate(DocumentEvent)必须 覆盖或实现超类型方法“
我该如何解决这个问题?
答案 0 :(得分:0)
你的代码看起来不错,我的意思是至少我对你添加文档事件监听器部分没有任何错误。看一下比较你所做的演示,你可能会发现问题:
答案 1 :(得分:0)
这没有任何意义。
我必须再次使用focusGained方法添加文档管理器..
@Override
public void focusGained(FocusEvent e) {
Object o = e.getSource();
if(o instanceof CustomTextField) {
((CustomTextField)o).getDocument().addDocumentListener(mcl);
}
}