Программная прокрутка таблицы SWT по горизонтали - PullRequest
10 голосов
/ 23 ноября 2010

Аналогичный вопрос , но не совсем то же самое.

table.showColumn() полезно, но прокрутка имеет только гранулярность ширины столбца. Но я хочу более точный контроль местоположения прокрутки.

Рассмотрим следующий вариант использования. У меня есть две таблицы, которые, как я знаю, имеют одинаковую ширину и одинаковую ширину столбцов. И я хочу реализовать своего рода синхронизатор прокрутки, чтобы, когда пользователь прокручивает одну таблицу (по горизонтали), другая таблица прокручивается в то же место.

EDIT:

На форуме Eclipse кажется, что тот же вопрос и некоторые рабочие идеи, но без разрешения.

EDIT: Я обнаружил это поведение в Windows

Ответы [ 3 ]

4 голосов
/ 09 сентября 2012

Метод setOrigin(x,y) в ScrolledComposite должен помочь:

Прокручивает содержимое, чтобы указанная точка в содержимом находилась в верхнем левом углу. Если контент не был установлен, ничего не произойдет. Отрицательные значения будут игнорироваться. Значения, превышающие максимальное расстояние прокрутки, приведут к прокрутке до конца полосы прокрутки.

4 голосов
/ 27 ноября 2010

Боюсь, я не могу получить удовлетворительный результат и в Windows Vista / 7, но чувствую, что приближаюсь.

Полагаю, вам придется взять горизонтальную прокрутку Tableбар с помощью table.getHorizontalBar().Затем вы можете указать scrollbar.setSelection(), чтобы переместить его в указанную позицию.

Вот где я застреваю.Так или иначе, вы должны уведомить либо Table, либо ScrollBar, что значение изменилось.Я пробовал все от update() до notifyListener(), но без игры в кости.Кажется, что это просто вопрос выкладки, но layout() также не имеет никакого эффекта.

Кстати, имейте в виду, что родительский элемент ScrollBar (тип Scrollable)это не ScrolledComposite, как я ожидал, но на самом деле Table.

Я надеюсь, что это даст вам некоторые идеи и поможет вам найти решение.Если это так, пожалуйста, дайте мне знать, так как это меня сейчас тоже беспокоит!

1 голос
/ 20 декабря 2010

Немного покопавшись в источнике ScrollBar, похоже, есть многочисленные (оконные) ошибки, которые были преодолены в тот или иной момент. Это может быть и другое, хотя вы не упомянули ни свою ОС, ни Пола, поэтому трудно сказать.

Все функции «изменить положение полосы прокрутки» в итоге вызывают SetScrollInfo, что является частным пакетом. Я подозреваю, что цель состоит в том, чтобы на самом деле обновить вещи так, как вы хотите.

Ничто из этого не решает вашу проблему. К счастью, тот же источник также намекает на решение:

Slider.

Вы должны были бы переопределить все поведение полосы прокрутки в пределах ползунка, но как только это будет сделано, должен дать вам контроль (хар), который вы хотите. С надеждой. OTOH, вы можете столкнуться с точно такой же ошибкой ОС (если она будет) и вернуться на круги своя.

В этот момент вы определенно регистрируете ее как ошибку Eclipse UI.

PS: Вы искали что-нибудь подобное в Eclipse Bugzilla ? * * * * * * * * * * * * * * , связанная с тем, что полоса прокрутки не синхронизирована с древовидным представлением в Навигаторе (на ПК Linux-Motif, но нормально работает в Windows) Я подозреваю, что вы найдете похожие проблемы, если будете копать немного больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...