Similar question,但不完全一样。
table.showColumn()
很有用,但滚动只有列宽的粒度。但我希望更精确地控制滚动位置。
考虑以下用例。我知道有两个表宽度相同且列宽相同的表。我想实现某种类型的滚动同步器,以便当用户滚动一个表(水平)时,另一个表滚动到同一位置。
编辑:
On the Eclipse forum似乎有同样的问题和一些有用的想法,但没有解决方案。
编辑: 我在Windows上发现了这种行为
答案 0 :(得分:4)
我担心我无法在Windows Vista / 7中获得令人满意的结果,但我觉得我已经接近了。
我相信您必须使用Table
抓住table.getHorizontalBar()
的水平滚动条。然后,您可以指定scrollbar.setSelection()
以使其移动到指定位置。
这是我被卡住的地方。不知何故,您必须通知Table
或ScrollBar
值已更改。我尝试了从update()
到notifyListener()
的所有内容,但没有骰子。这似乎只是一个布局问题,但layout()
也没有任何影响。
顺便提一下,请记住,ScrollBar
的父级(类型Scrollable
)不是我预期的ScrolledComposite
,而实际上是Table
本身。
我希望这能为您提供一些想法并帮助您找到解决方案。如果是这样,请告诉我,因为它现在也在困扰我!
答案 1 :(得分:4)
ScrolledComposite
中的方法setOrigin(x,y)
应该有所帮助:
滚动内容,使内容中的指定点位于左上角。如果未设置任何内容,则不会发生任何事情。负值将被忽略。大于最大滚动距离的值将导致滚动到滚动条的末尾。
答案 2 :(得分:1)
在ScrollBar
源中略微探讨了一下,看起来有很多(窗口)错误已经被克服了。这可能是另一个,虽然你没有提到你的操作系统,也没有保罗,所以很难说。
所有“更改滚动条位置”功能最终调用SetScrollInfo
这是包私有。我怀疑这样做的目的是以你想要的方式实际更新。
这些都不能解决您的问题。值得庆幸的是,同样的消息来源也暗示了一个解决方案:
滑块。
您必须重新实现滑块内的所有滚动条行为,但一旦完成,应为您提供所需的控件(har)。希望。 OTOH,你可能遇到完全相同的操作系统错误(如果错误),并回到正方形。
在这一点上,您肯定将其注册为Eclipse UI错误。
PS:您是否在Eclipse Bugzilla搜索了类似的内容?与滚动条相关的一点点翻转this bug与导航器中的树视图不同步(在PC Linux-Motif上,但在Windows中正常工作)。我怀疑如果再挖一点,你会发现类似的问题。