重复调用DocumentListener方法

时间:2017-11-28 09:34:39

标签: java swing loops invokelater swingutilities

我已经创建了一个documentlistener,它将在插入文本时调用方法。它的工作原理但问题在于它就好像它处于一个循环中并被保持被调用 该方法使用方法内部的swingutilties.invokelater。

   private void addNewLine() {
       SwingUtilities.invokeLater( () -> {
        textArea.append(System.getProperty("line.separator")+"hey");
       });
   }


    private final DocumentListener addNewLine = Handlers.forDocumentUpdate((event) -> {
         addNewLine();
    });

    @SuppressWarnings("serial")
    static DocumentListener forDocumentUpdate(Consumer<? super DocumentEvent> eventHandler) {
    return new DocumentListener() {
        @Override
        public void insertUpdate(DocumentEvent event) {
            eventHandler.accept(event);
        }
        @Override
        public void removeUpdate(DocumentEvent event) {
        }
        @Override
        public void changedUpdate(DocumentEvent event) {
        }
      };
    }

1 个答案:

答案 0 :(得分:0)

我解决了!!!问题是,监听器一遍又一遍地调用该方法,因为该方法更改了文档。 所以我在方法调用之前放了一个if语句。

     if(event.getLength() > 2 ) addNewLine();

getlength()获得了变化的大小。