我写了一个十六进制查看器。
然而,我发现Swing存在局限性。如果您有一个3GB的文件,并且每行渲染20个像素,则该组件的总高度为:
(每行3GB / 16字节)*每行20像素= 3.75GB
此时,Swing无法呈现任何内容,因为值溢出Integer.MAX_VALUE
。
到目前为止,这是我最好的想法:
这似乎做了很多工作,但是这样的组件可能对大图或大文本文档等有用。
我考虑过对它进行分页,但是当你使用“查找”功能并且它匹配跨越页面边界的文本时,它似乎很尴尬。
我通常使用的(非Java)十六进制查看器(Hex Fiend)也不使用分页。它只是滚动文档的整个高度,就好像它不是问题一样。
有没有人知道解决这类事情的好方法?
答案 0 :(得分:1)
您不需要在长坐标中绘制十六进制查看器,因为您只需要绘制您希望此时可见的文件部分。 JScrollPane是一个非常有用的工具,用于滚动大型组件,但你不需要它。如果你想滚动这么多的东西,让一个足够大的组件来容纳所有东西很麻烦,那么你可以通过制作一个JScrollBar并根据滚动条的位置绘制你的组件来简单地进行滚动。