java - 如何让 JScrollBar 在构造函数中采用长值?

标签 java swing jscrollbar

因此 JScrollBar 有一个构造函数,如下所示:

public JScrollBar(int orientation, int value, int extent, int min, int max) 

对于 JScrollBar 的实现,我需要让 int 值很长,因为我的数据大小可能超过 int 的限制,所以类似于:

public JScrollBar(int orientation, long value, long extent, long min, long max) 

对我来说,为 JScrollBar 实现这个构造函数的最佳方法是什么?是完全重新制作 JScrollBar,因为这些值无处不在?或者还有其他更好的方法来做到这一点。

注意:如果我完全重写 JscrollBar,我还必须覆盖 swing.DefaultBoundedRangeModel,因为它也需要一个 int。这似乎不是最好的方法,所以有人有更好的想法吗?

最佳答案

在某种程度上,为了正确检测实际变化,您将耗尽屏幕分辨率。要么滚动内容,但滚动条不会移动。或者,用户将移动滚动条以传送到新区域,从而造成迷失方向。

一个 32 位整数累加起来是 20 亿个正数。如果您的屏幕分辨率甚至是 1,000 像素,用户将无法控制滚动条,因为滚动条上的任何像素移动都将代表您滚动的目标中的 2,147,483 个像素(如果您的缩放比例为 1:1)。所以我可能会想一种方法将缩放级别映射到滚动条上,以便您可以在任何级别滚动并且滚动会很平滑。

其他选项可能是使用概述/详细信息控件,该控件显示一张小图片,其中有一个正方形显示您在大图像中的位置,然后放大显示。您可以拖动上图中的图片并在详细图像中查看其结果。问题是,如果你只移动一个像素,你仍然会有 200 万像素的移动,因此在小缩放比例下移动这么大的图像将会非常迷失方向。但是,在详细 View 中使用手拖动来进行较小的移动,这样就不会迷失方向。这解决了重新实现 JScrollBar 的问题,可能是更好的选择。

关于java - 如何让 JScrollBar 在构造函数中采用长值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920454/

相关文章:

java - 如何给二维数组赋值?

java - JScrollPane实际滚动条的自定义显示(设为透明)

java - JScrollPane 不会更新 JSplitPane 上的 JScrollBar

java - 通配符编译时错误

java - 为链接列表创建 getLast 方法

java - 将多个图像或文件上传到 firebase 中的存储并获取其 uri 并将 uri 放入数据库中

java - GridLayout 中的按钮,不可调整大小

java - Maxmind DatabaseReader Java 堆空间

java - 如何在单击按钮时增加变量?

java - NetBeans:如何将 ScrollBar 添加到 JPanel