请参阅Shai Almog的这个问题和答案: Rebuild list of containers without scrolling the list
我有一个带有一个容器(TableLayout)的表单,其中包含多个带有标签和按钮的行。单击按钮可更改行的顺序并重建整个表单(在myForm.removeAll()
之后)。在myForm.revalidate()
之后,表单会跳到顶部。
我正在尝试实现这种确切的行为,在重新验证/更改容器内容后返回到同一点(滚动位置Y)。
我将Container类子类化,使setScrollY(int)
可见。使用具有任意值的值不会滚动到该位置,因此setScrollY
方法似乎不会整体更改内容窗格的滚动位置。
myContainer.getScrollY()
始终返回“0”。我只通过调用getContentPane().getScrollY()
获得滚动位置。
但显然无法在内容窗格上调用setScrollY()
- 方法 - 因为无法对内容窗格进行子类化 - 在重新验证表单后回滚到相同的位置。
感谢您的任何建议!
答案 0 :(得分:1)
使用边框布局禁用滚动窗体/内容窗格。
将您的容器(您展示的地方setScroll
)放在中心,并确保在setScrollableY(true)
上调用Container
。