从另一个类向JTextPane添加文本

时间:2013-10-10 15:27:48

标签: java swing user-interface jtextpane documentfilter

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

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

但NetBeans无法识别参数。谢谢你的帮助。

*一些澄清,通过更新我的意思是它实际上显示了JTextPane上的更改。

2 个答案:

答案 0 :(得分:1)

  

我一直倾向于文档审阅者或文档过滤器

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

  

我尝试过以下方面:

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

您不应直接访问DocumentFilter。当您在Document上调用insertString()方法时,DocumentFilter将访问Document。

相反,你应该只是调用Document的<>

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

答案 1 :(得分:0)

如果你从不同的线程做,你需要使用SwingUtilities的invokeLater

public void updateTextPane(final String text){
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
          updateTextPane(text);
        }
    });
}

记得将文本定义为final,这不是String是不可变的btw

的问题