我们需要使用swing加载和显示大文件(富文本),大约50mb。问题是渲染文件的性能非常差。我们尝试过JTextPane和JEditorPane,但都没有成功。有没有人有此方面的经验并能给我一些建议?谢谢!
JTextPane/JEditorPane 在处理甚至是 1MB 的文本时表现不佳(特别是长行的文本)。
你可以尝试使用 JEdit (StandaloneTextArea) - 它比 Swing 文本组件快得多,但我怀疑它是否能够处理这么多文本。我用 45m 文件尝试过,虽然加载了 (~25秒),我可以向下滚动,但随后我开始出现“outofmemory”错误,堆大小为1700m。
为了构建一个真正可扩展的解决方案,有两个明显的选择:
使用分页。你可以通过在页面中显示文本来很好地使用标准的 Swing。
构建自定义文本渲染器。它可以像可滚动窗格一样简单,只绘制可见部分,使用 BufferedReader 跳过文件中的所需行并读取有限数量的行来显示。我以前做过这件事,这是一个可行的解决方案。当然,如果需要具备“文本选择”功能,则需要进行更多的工作。