【问题标题】:DocumentListener not calling insertUpdate methodDocumentListener 没有调用 insertUpdate 方法
【发布时间】:2015-10-28 06:22:05
【问题描述】:

我正在向我的班级添加一些自定义侦听器,但没有触发文档事件。为什么?

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 会在底部显示一条红色消息,上面写着

"MyClass.MyCustomListener 类型的方法 insertUpdate(DocumentEvent) 必须 覆盖或实现超类型方法"

我该如何解决这个问题?

【问题讨论】:

    标签: java swing events documentlistener focuslistener


    【解决方案1】:

    您的代码看起来不错,我的意思是至少您添加文档事件侦听器部分没有任何问题。看看演示比较你做了什么,你可能会发现问题:

    https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/events/DocumentEventDemoProject/src/events/DocumentEventDemo.java

    【讨论】:

      【解决方案2】:

      这毫无意义。

      我不得不再次从 focusGained 方法添加DocumentListener..

          @Override
          public void focusGained(FocusEvent e) {
      
              Object o = e.getSource();
              if(o instanceof CustomTextField) {  
                  ((CustomTextField)o).getDocument().addDocumentListener(mcl);
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2014-03-12
        • 1970-01-01
        • 2011-06-04
        • 2011-06-03
        • 2021-10-25
        • 2014-12-03
        • 2023-03-09
        • 2012-03-13
        • 2012-08-25
        相关资源
        最近更新 更多