0

我正在尝试将字符串从另一个类添加到 JTextPane,但它不会更新 JTextPane。我尝试过线程,现在我一直倾向于使用文档侦听器或文档过滤器。显然 DocumentFilter 用于更新 JTextPane Docs,但是是否可以从另一个类执行此操作并在我添加字符串时更新它?我已经尝试了一些类似的东西:

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

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

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

4

2 回答 2

1

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

当 Document 发生更改时,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) 
于 2013-10-10T15:53:41.233 回答
0

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

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

请记住将文本定义为最终文本,顺便说一句,String 是不可变的不是问题

于 2013-10-10T15:30:01.973 回答