JTextPane编辑器大文件&性能

时间:2010-08-31 16:44:24

标签: swing file jtextpane

我正在使用JTextPane来编辑XML文件。 jflex解析器在令牌中拆分xml文件并使用自定义文档(扩展 DefaultStyledDocument)我的颜色语法:

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

我的问题是加载和编辑大型xml文件,例如400kb xml文件需要30秒,而对于700kb 1Mb我得到java堆空间。 我谷歌它,我发现:

“定义JTextPane / JEditorPane可以很好地处理的限制(例如500KB或1MB)。您只需要将一大块文件加载到具有此大小的控件中。 首先加载文件的第一个分区。 然后,您需要与滚动容器进行交互,并查看它是否已到达文件当前块的结尾/开头。如果是这样,显示一个漂亮的等待光标并将上一个/下一个块加载到内存并进入文本控件。 加载块是根据文件中当前光标位置(偏移量)计算的。 loading chunk = offset - limit / 2 to offset + limit / 2 加载块时,JTextPane / JEditorPane上的文本不得更改,否则用户会感觉自己处于文件的另一个位置。 这不是一个简单的解决方案,但如果你没有找到任何其他第三方控制来做到这一点,我会这样做。 “(bruno conde)

这是一个很好的解决方案,任何人都可以给我一个例子(链接教程项目)吗?还是其他任何解决方案? 我们如何才能提高jtextpane的性能? 谢谢

1 个答案:

答案 0 :(得分:0)

JTextPane中的一兆字节文本应该不是问题。在我的桌面上,使用setText()添加1MB字符串需要大约1.6秒,但一旦加载就没有明显的延迟。

尝试禁用语法突出显示。这是延迟的最可能来源。