Java 从另一个类向JTextPane添加文本

Java 从另一个类向JTextPane添加文本,java,swing,user-interface,jtextpane,documentfilter,Java,Swing,User Interface,Jtextpane,Documentfilter,我试图从另一个类向JTextPane添加字符串,但它不会更新JTextPane。我试过线程,现在我倾向于使用documentlistener或DocumentFilter。显然DocumentFilter是用于更新JTextPane文档的,但是否可以从另一个类执行此操作,并在添加字符串时对其进行更新? 我尝试了以下几点: textPane.insertString(FilterBypass fb, int offs,String str, AttributeSet a) 但是NetBeans

我试图从另一个类向JTextPane添加字符串,但它不会更新JTextPane。我试过线程,现在我倾向于使用documentlistener或DocumentFilter。显然DocumentFilter是用于更新JTextPane文档的,但是否可以从另一个类执行此操作,并在添加字符串时对其进行更新? 我尝试了以下几点:

textPane.insertString(FilterBypass fb, int offs,String str, AttributeSet a) 
但是NetBeans无法识别这些参数。谢谢你的帮助


*一些澄清,我所说的更新实际上是指它在JTextPane上显示了更改。

如果您是从不同的线程执行的,则需要使用SwingUtilities中的invokeLater

public void updateTextPane(final String text){
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
          updateTextPane(text);
        }
    });
}
记住将文本定义为final,顺便说一句,字符串不可变并不是问题

我一直倾向于使用文档监听器或文档过滤器

DocumentListner会在文档发生更改时通知您。DocumentFilter允许您在更改文档之前过滤文本

我尝试了以下几点:

textPane.insertString(FilterBypass fb, int offs,String str, AttributeSet a) 
您不应该直接访问DocumentFilter。当您对文档调用insertString()方法时,DocumentFilter将访问文档

相反,您应该只调用文档的insertString()方法:

textPane.getDocument().insertString(int offs,String str, AttributeSet a) 

因此,如果调用文档的insertString()方法,是否会向文档中添加一个字符串,并同时更新JTextPane?谢谢