我意识到还有一个与“无限”JScrollPanes 相关的问题,但是我认为我正在寻找的是略有不同的东西。
基本上,我有一个可以向任何方向拖动的对象集合,并且滚动视口(viewport)的范围应始终包含所有这些对象的边界矩形。换句话说,文档没有固定的“来源”。因此,如果将对象拖到左侧、离开屏幕边缘,则视口(viewport)范围应向负方向扩展以包含该对象的新位置。 (当您拖动时它也应该自动滚动,但我意识到这是一个单独的问题。)
我不确定如何使用 JScrollPane API 来执行此操作,它似乎希望您设置底层组件的首选大小,但似乎没有该组件的偏移量或原点的概念。 (底层的 JViewport 似乎可以做到这一点,但我无法真正弄清楚 JViewport API。)
最佳答案
滚动 Pane 和 View 端口实际上与它无关。您需要的是更改视口(viewport) View 的首选大小,并让滚动 Pane /视口(viewport)处理剩下的事情。
基本上,您需要做的是计算组件上的最宽点和最高点并使视口(viewport)无效,以强制重新计算其布局要求。
为自己创建一个自定义组件(例如使用 JPanel
)并重写 getPreferredSize
方法。此方法应返回组件所需的大小。
当大小要求发生变化时,调用revalidate()
关于java - 如何制作包含点集合的 JScrollPane?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14211071/