2010-08-31 36 views
0

我正在使用JTextPane编辑XML文件。在令牌甲JFLEX解析器分裂xml文件,并使用自定义文档(延伸 DefaultStyledDocument)1颜色语法:JTextPane编辑器大文件和性能

doc.setCharacterAttributes(token.getCharBegin()+变化, token.getCharEnd() - token.getCharBegin() , Token_Styles_Define.getStyle(token.getDescription()),true);

我的问题是加载和编辑大的XML文件,例如一个400KB的XML文件需要30秒和700KB 1MB我得到的Java堆空间。 我google一下,我发现:

“定义一个的JTextPane/JEditorPane中可以很好地处理的限制(如500KB或1MB)您只需要到文件的块装入这种规模的控制 。首先加载文件的第一个分区 然后,您需要与滚动容器进行交互,并查看它是否已经到达文件当前块的末尾/开头。如果是,请显示一个不错的等待游标并加载之前的/下一个块到内存并进入文本控制 加载块是根据当前文件中的光标位置(偏移量)计算的 加载chunk = offset - limit/2到offset + limit/2 JTextPane上的文本/ JEditorPane在加载块或e时不能更改用户感觉就像是在文件的另一个位置。 这不是一个简单的解决方案,但如果您没有找到任何其他第三方控件来做到这一点,我会这样做。 “(布鲁诺·孔德)

这是一个很好的解决方案,任何人可以给我一个为例(链接教程项目)?或者有没有其他解决办法? 我们怎样才能提高JTextPane的性能? THX

+0

http://java-sl.com/JEditorPanePerformance.ht ml 可能会有帮助关于, Stas – StanislavL 2010-10-31 15:56:37

回答

0

的兆字节在我的桌面上,使用setText()添加一个1MB字符串需要1.6秒,但一旦加载就没有明显的延迟。最有可能的延迟来源。