Если вам не хватает стандартного набора виджетов, можно реализовать пользовательский виджет. В SWT есть пакет org.eclipse.swt.custom, в котором содержатся пользовательские управляющие элементы, не входящие в основной набор SWT, но которые можно реализовать в рабочей среде.
Управляющий элемент |
Назначение |
---|---|
CBanner | Используется для макетирования области панелей инструментов и их включения/выключения. |
CCombo | Аналог Combo с поддержкой настройки вертикального размера для помещения в ячейки таблиц. |
CLabel | Подобен Label, но поддерживает эллиптическое обрезание текста и замену его многоточием. Также поддерживает эффект градиента для цвета фона, как показано в активной панели рабочей среды. Не поддерживает перенос. |
CTabFolder | Подобен TabFolder, но поддерживает дополнительную настройку внешнего вида вкладок (вверху или внизу) и рамок. |
CTabItem | Выбираемый объект пользовательского интерфейса, соответствующий вкладке страницы в CTabFolder. |
SashForm | Составной элемент управления, дочерние элементы которого располагаются в строку или в столбец и разделяются специальным значком Sash, с помощью которого пользователь может изменить их размеры. |
ScrolledComposite | Составной управляющий элемент с прокруткой и (необязательно) растягиванием содержимого на все доступное пространство. |
StyledText | Редактируемый управляющий элемент с возможностью ввода текста. Область текста внутри управляющего элемента можно обозначать разными цветами и разным стилем шрифта. |
ViewForm | Используется для размещения и настройки размера локальных меню, панелей инструментов и меток панели. |
После того, как определены цели и задачи виджета, принято решение о поддерживаемых платформах, следует продумать несколько вариантов его реализации. Эти способы можно применять как вместе, так и по отдельности, в зависимости от операционной системы.
Если для вашего приложения нужен внутренний виджет, которого нет в наборе готовых элементов SWT, то его нужно реализовывать полностью. Это может быть виджет платформы, сторонний виджет или любой другой из общей библиотеки. В статье Creating Your Own Widgets using SWT приведен полный пример реализации внутреннего пользовательского виджета.
Простые виджеты можно объединять в более сложные. Например, выпадающий список можно реализовать объединив текстовое поле, кнопку и список. Создание объединенного виджета состоит в создании класса, производного от Composite, и управлении управлении виджетами внутри него.
Простой пример можно найти в статье CCombo.
Иногда за основу при реализации нового виджета взять нечего. Это значит, что новый виджет придется реализовывать полностью самостоятельно, создавая новый обработчик события Paint. Конечно, такой способ достаточно сложен, но и у него есть преимущества: в результате получится полностью переносимая реализация.
Пользовательские управляющие элементы реализуются путем наследования классов Canvas или Composite. Используйте Canvas если у вашего виджета не должно быть дочерних управляющих элементов.
Внутреннюю реализацию пользовательского виджета можно разбить на несколько основных задач:
По такому принципу реализованы многие управляющие элементы в org.eclipse.swt.custom. Простой пример можно найти в статье CLabel.
Дополнительная информация о пользовательских управляющих элементах приведена в статье Creating your own widgets using SWT.