我正在尝试从另一个类向JTextPane添加字符串,但它不会更新JTextPane。我已经尝试过线程,现在我一直倾向于使用documentlistener或文档过滤器。显然DocumentFilter用于更新JTextPane文档,但是可以从另一个类执行此操作并在添加字符串时更新吗? 我尝试了以下几点:
textPane.insertString(FilterBypass fb, int offs,String str, AttributeSet a)
但NetBeans无法识别参数。谢谢你的帮助。
*一些澄清,通过更新我的意思是它实际上显示了JTextPane上的更改。
答案 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
的问题