以编程方式水平滚动SWT表

RAY*_*RAY 10 java swt

类似的问题,但不完全一样.

table.showColumn()很有帮助,但滚动只有列宽的粒度.但我希望更精确地控制滚动位置.

考虑以下用例.我知道有两个表宽度相同且列宽相同的表.我想实现某种滚动同步器,以便当用户滚动一个表(水平)时,另一个表滚动到同一位置.

编辑:

在Eclipse论坛上似乎有同样的问题和一些工作思路,但没有解决方案.

编辑:我在Windows上发现了这种行为

Pau*_*sma 5

恐怕我也无法在 Windows Vista/7 中获得令人满意的结果,但感觉我已经很接近了。

我相信您必须Table使用 来抓住水平滚动条table.getHorizontalBar()。然后,您可以指定scrollbar.setSelection()使其移动到指定位置。

这就是我陷入困境的地方。无论如何,您必须通知Table或ScrollBar值已更改。我已经尝试了从update()到 的所有方法notifyListener(),但没有骰子。看起来只是一个布置的问题,但layout()也没有任何效果。

顺便说一句,请记住ScrollBar的父级(类型Scrollable)并不ScrolledComposite像我预期的那样,但实际上是其Table本身。

我希望这能给您一些想法并帮助您找到解决方案。如果是这样,请告诉我,因为它现在也困扰着我!


dac*_*009 5

setOrigin(x,y)中的方法ScrolledComposite应该有帮助:

滚动内容,使内容中的指定点位于左上角。如果没有设置任何内容,则不会发生任何事情。负值将被忽略。大于最大滚动距离的值将导致滚动到滚动条的末尾。