java - 如何制作包含点集合的 JScrollPane?

标签 java swing scroll jscrollpane

我意识到还有一个与“无限”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/

相关文章:

java - 单击后重命名按钮 - Java JButton

java - JScrollPane 无法与 FormLayout 一起使用

android - 在所有移动设备中禁用滚动

java - 如何管理 M 个线程(每个任务 1 个)确保同时只有 N 个线程。 N < M. 在 Java 中

java - 使用 Windows 外观时 JFileChooser 非常慢

java - 简化代码以加载 XML 文件的建议?

java - Android 上的 webGL 替代品

java - 如果文本不适合 JLabel,我想减小字体大小

c# - WPF 数据网格 : reduce column width to fit its content while scrolling

C# 防止 RichTextBox 滚动/跳转到顶部