gpt4 book ai didi

java - 如果我的组件的 PreferredSize 高于 Integer.MAX_VALUE 怎么办?

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:28 25 4
gpt4 key购买 nike

我写了一个十六进制查看器。

但是,我发现 Swing 存在局限性。如果您有一个 3GB 文件并且以每行 20 像素进行渲染,则组件的总高度为:

(3GB/每行 16 字节)* 每行 20 像素 = 3.75GB

此时,Swing 无法渲染任何内容,因为值溢出 Integer.MAX_VALUE

这是我迄今为止最好的想法:

  • 克隆足够多的 Java2D 和 JComponent,以替代 JComponent,后者在长坐标中完成所有渲染。
  • 克隆 JViewport,以便您可以渲染组件的 View /
  • 像平常一样将替代的 JViewport 放入 JScrollPane 中。

这看起来工作量很大,但这样的组件对于大型图表或大型文本文档等可能很有用。

我考虑过只对它进行分页,但当您使用“查找”功能并且它匹配跨越页面边界的文本时,这似乎会很尴尬。

我通常使用的(非 Java)十六进制查看器(Hex Fiend)也不使用分页。它只是滚动文档的整个高度,就好像这不是问题一样。

有人知道解决此类问题的好方法吗?

最佳答案

您不需要在长坐标中绘制十六进制查看器,因为您只需要绘制文件中您希望当前可见的部分。 JScrollPane 是一个非常有用的工具,用于滚动大型组件,但您不需要它。如果你想滚动浏览太多东西,以至于很难有一个足够大的组件来容纳所有内容,那么你可以简单地通过创建一个 JScrollBar 并根据滚动条的位置绘制你的组件来完成滚动。

关于java - 如果我的组件的 PreferredSize 高于 Integer.MAX_VALUE 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20164842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com