Недавно я представил пользовательский элемент управления ползунком, полезный для улучшения внешнего вида и ощущения более тонких макетов вида. К счастью, кажется, что виджет уже нашел ранних последователей за пределами мира Code Affine. Что привело к некоторым улучшениям, которые будут представлены в следующих разделах.
SWT Look and Feel of Scrollbars
«SWT — это тонкий слой абстракции поверх родных виджетов ОС. Это очень хорошая вещь, если вы намерены, чтобы ваши приложения хорошо интегрировались с внешним видом ОС. Но в качестве компромисса этот подход значительно ограничивает возможности стилизации »(цитирую себя из Sacrilege,… )
В частности, я воспринимаю родные полосы прокрутки SWT часто как разрушительные. Но будучи частью нативных элементов управления, их внешний вид и поведение SWT вообще не настраиваются . Поэтому я создал собственный виджет слайдера SWT с именем FlatScrollBar
.
Поскольку также невозможно заменить встроенную полосу прокрутки SWT элементов управления, таких как деревья или таблицы, я представил ScrollableAdapter
который обходит эти ограничения с помощью наложений. Пока что у меня есть адаптеры для дерева и таблиц и прототип для ScrolledComposite
в процессе разработки.
Цвет …
Когда дело доходит до стиля, цвета очень важны. Поэтому неудивительно, что первый запрос на усовершенствование касался возможности изменения цвета различных элементов ползунка. Из-за этого я ввел три свойства incrementColor , pageIncrementColor и thumbColor, чтобы разрешить соответствующие корректировки:
Следующий фрагмент…
1
2
3
|
FlatScrollBarTable table = [...] table.setPageIncrementColor( getColor( SWT.COLOR_INFO_BACKGROUND ) ); table.setThumbColor( getColor( SWT.COLOR_WIDGET_LIGHT_SHADOW ) ); |
… Отображает полосы прокрутки следующим образом ( getColor
извлекает системный цвет из текущего экрана):
Поскольку встроенные полосы прокрутки в Mac OS выглядят приемлемыми из коробки, адаптер воздерживается от пользовательских наложений на этой платформе. Это касается только платформ Gtk и MS Windows. Однако сам элемент управления FlatScrollBar хорошо работает и в OS X.
…и более
Внимательный читатель может поинтересоваться, для чего полезен incrementColor, поскольку на рисунке показаны только три элемента слайдера. Можно отобразить кнопки увеличения, используя incrementButtonLength :
1
2
3
4
|
FlatScrollBarTable table = [...] table.setIncrementButtonLength( 7 ); table.setIncrementColor( getColor( SWT.COLOR_WIDGET_DARK_SHADOW ) ); [...] |
Аккуратно, не правда ли?
Последнее улучшение не связано со стилем, но, тем не менее, заслуживает внимания. Он добавляет нетипизированную обработку событий в FlatScrollBar
. Так что если вы используете Java 8, наблюдение за выбором полосы прокрутки может быть обработано, как показано здесь:
1
2
|
FlatScrollBar scrollBar = new FlatScrollBar( parent, SWT.HORIZONTAL ); scrollbar.addListener( SWT.Selection, event -> handleEvent() ); |
Вывод
Использование FlatScrollBar
и ScrollableAdapter
в одном из наших проектов пока выглядит многообещающе. Мне любопытно посмотреть, насколько устойчивым будет этот подход и возможно ли его адаптировать также к элементам управления текстом и / или стилю текста. Элементы управления являются частью функции com.codeaffine.eclipse.swt репозитория Xiled P2: http://fappel.github.io/xiliary
Если вы хотите взглянуть на код или подать проблему, вы также можете взглянуть на проект Xiled GitHub. Ищите FlatScrollbarDemo
, FlatScrollBarTreeDemo
и FlatScrollBarTableDemo
для примеров использования: https://github.com/fappel/xiliary
Ссылка: | SWT Look and Feel: настройте ColorScrollBar Color и многое другое от нашего партнера по JCG Рудигера Херрманна в блоге Code Affine . |