Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2013_1 / ООП / Введение_SWG.pdf
Скачиваний:
82
Добавлен:
23.02.2015
Размер:
3.32 Mб
Скачать

2 Элементы управления

2.1 Стандартные виджеты

Управляющий элемент – это виджет, который можно создать и поместить где угодно в дереве предков/потомков. Базовый набор виджетов SWT определяется в пакете org.eclipse.swt.widgets. В приведенной ниже таблице 2.1 собраны конкретные типы элементов управления, входящих в этот пакет, и их назначение.

Таблица 2.1 – Состав пакета org.eclipse.swt.widgets

Виджет

Назначение

 

 

Browser

Браузер. Управляющий элемент, содержащий исходную

функцию вывода HTML

 

 

 

Button

Кнопка. Выбираемый управляющий элемент, отслеживающий

нажатия и/или отпускания

 

 

 

 

Холст. Составной элемент управления, представляющий собой

Canvas

поверхность для рисования. Часто используется для реализации

 

пользовательских элементов управления

 

 

Caret

Текстовый курсор. Курсор, служащий точкой вставки текста

 

 

 

Выпадающий список. Выбираемый элемент управления,

Combo

позволяющий пользователю выбрать строку из списка или

(необязательно) ввести новую строку в предоставленное поле

 

 

ввода

 

 

Composite

Составной элемент. Элемент управления, в котором могут

содержаться другие виджеты

 

 

 

CoolBar

Панель Coolbar. Составной элемент управления, позволяющий

динамически переносить элементы, расположенные в панели

 

 

 

 

Элемент CoolItem. Выбираемый объект пользовательского

CoolItem

интерфейса, представляющий собой динамически изменяемую

 

область панели Coolbar

 

 

Group

Группа. Составной элемент управления, группирующий другие

виджеты и заключающий их в рамку и/или метку

 

 

 

Label

Метка. Элемент управления без возможности выбора,

показывающий строку или изображение

 

 

 

Link

Ссылка. Выбираемый элемент управления, предназначенный

для отображения текста со ссылками

 

 

 

List

Список. Выбираемый элемент управления, позволяющий

 

 

28

 

выбрать строку или строки

 

 

 

 

Menu

Меню. Объект пользовательского интерфейса, содержащий

пункты меню

 

 

 

 

 

 

 

 

 

MenuItem

Пункт меню. Выбираемый объект пользовательского

интерфейса

 

 

 

 

 

 

 

 

 

 

 

ProgressBar

Индикатор состояния. Управляющий элемент без возможности

выбора, отображающий состояние. Обычно представлен в виде

 

гистограммы

 

 

 

 

 

 

 

 

 

 

 

Элемент

Sash.

Выбираемый

элемент

управления,

Sash

представляющий из себя линию, которую можно перетаскивать

мышью в нужное место в пределах родительского окна.

 

Используется для изменения размеров дочерних виджетов путем

 

перемещения разделяющей их линии

 

 

 

 

Scale

Линейка. Выбираемый элемент управления, представляющий

собой ряд числовых значений

 

 

 

 

 

 

 

ScrollBar

Полоса прокрутки. Выбираемый элемент управления,

представляющей собой ряд положительных чисел. Используется

 

в элементе Composite со стилями V_SCROLL и/или H_SCROLL.

 

 

 

Оболочка. Окно, управляемое системным администратором

Shell

окон. Элементы Shell могут порождаться либо элементом Display

(shell верхнего уровня), либо другим элементом shell (вторичные

 

 

shell)

 

 

 

 

 

 

 

Ползунок. Выбираемый элемент управления, представляющий

Slider

собой ряд числовых значений. Ползунок отличается от линейки

тем, что на нем есть курсор в виде руки, с помощью которого

 

 

можно регулировать положение ползунка

 

 

 

Spinner

Счётчик. Выбираемый элемент управления для ввода чисел

 

 

TabFolder

Папка закладок. Составной элемент управления, группирующий

страницы, выбранные пользователем с помощью отмеченных

 

закладок

 

 

 

 

 

 

 

TabItem

Закладка. Выбираемый объект пользовательского

интерфейса,

соответствующий странице в папке закладок

 

 

 

 

 

 

 

 

 

Table

Таблица. Выбираемый элемент управления, отображающий

 

 

список табличных элементов, которые можно выбирать.

 

Элементы представлены в строках, каждая из которых содержит

 

 

 

 

 

 

29

 

несколько столбцов, представляющих различные аспекты

 

элементов

 

 

 

 

 

 

TableColumn

Столбец таблицы. Выбираемый объект пользовательского

 

интерфейса

 

 

 

 

 

 

 

 

TableItem

Ячейка.

Выбираемый

объект пользовательского интерфейса,

представляющий собой элемент таблицы

 

 

 

 

 

 

 

Text

Текстовое поле. Редактируемый элемент управления для ввода

текста

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ToolBar

Панель

инструментов. Составной

элемент

управления, на

котором расположены выбираемые элементы управления панели

 

 

 

 

 

 

 

ToolItem

Элемент

панели

инструментов.

Выбираемый

объект

пользовательского интерфейса

 

 

 

 

 

 

 

 

 

Tracker

Ограничивающая рамка. Объект пользовательского интерфейса,

ограничивающий области растяжимой нити

 

 

 

 

 

 

 

Tray

Лоток. Представляет системный лоток, входящий в состав

области состояния панели задач некоторых операционных

 

систем

 

 

 

 

 

 

 

TrayItem

Значок лотка. Выбираемый объект пользовательского

интерфейса, представляющий элемент системного лотка

 

операционной системы

 

 

 

 

 

 

Tree

Дерево. Выбираемый элемент управления, отображающий

иерархический список элементов дерева, которые можно

 

выбирать

 

 

 

 

 

 

 

TreeColumn

Раздел дерева. Выбираемый объект пользовательского

 

интерфейса

 

 

 

 

 

 

 

 

TreeItem

Элемент

дерева. Выбираемый объект

пользовательского

интерфейса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2 Пользовательские виджеты

Если вам не хватает стандартного набора виджетов, можно создать заказной виджет. В SWT есть пакет org.eclipse.swt.custom (таблица 2.2), в

30

котором содержатся пользовательские управляющие элементы, не входящие в основной набор SWT, но которые можно реализовать в рабочей среде.

Таблица 2.2 – Состав пакета org.eclipse.swt.custom

Управляющий

Назначение

элемент

 

CBanner

Используется для макетирования области панелей

инструментов и их включения/выключения

 

CCombo

Аналог Combo с поддержкой настройки вертикального

размера для помещения в ячейки таблиц

 

 

Подобен Label, но поддерживает эллиптическое обрезание

CLabel

текста и замену его многоточием. Также поддерживает

эффект градиента для цвета фона, как показано в активной

 

панели рабочей среды. Не поддерживает перенос

 

Подобен TabFolder, но поддерживает дополнительную

CTabFolder

настройку внешнего вида вкладок (вверху или внизу) и

 

рамок

CTabItem

Выбираемый объект пользовательского интерфейса,

соответствующий вкладке страницы в CTabFolder

 

 

Составной элемент управления, дочерние элементы

SashForm

которого располагаются в строку или в столбец и

разделяются специальным значком Sash, с помощью

 

которого пользователь может изменить их размеры

 

Составной управляющий элемент с прокруткой и

ScrolledComposite

(необязательно) растягиванием содержимого на все

 

доступное пространство

 

Редактируемый управляющий элемент с возможностью

StyledText

ввода текста. Область текста внутри управляющего

элемента можно обозначать разными цветами и разным

 

стилем шрифта

ViewForm

Используется для размещения и настройки размера

локальных меню, панелей инструментов и меток панели

 

 

 

Реализация пользовательского виджета

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

Реализация внутреннего виджета

31

Если для вашего приложения нужен внутренний виджет, которого нет в наборе готовых элементов SWT, то его нужно реализовывать полностью. Это может быть виджет платформы, сторонний виджет или любой другой из общей библиотеки.

Совмещение существующих виджетов

Простые виджеты можно объединять в более сложные. Например, выпадающий список можно реализовать объединив текстовое поле, кнопку и список. Создание объединенного виджета состоит в создании класса, производного от Composite, и управлении виджетами внутри него. Пример такой реализации приведен в разделе 8.

Самостоятельная реализация

Иногда за основу нечего взять при реализации нового виджета. Это значит, что новый виджет придется реализовывать полностью самостоятельно, создавая новый обработчик события Paint. Конечно, такой способ достаточно сложен, но и у него есть преимущества: в результате получится полностью переносимая реализация.

Пользовательские управляющие элементы реализуются путем наследования классов Canvas или Composite. Используйте Canvas, если у вашего виджета не должно быть дочерних управляющих элементов.

Внутреннюю реализацию пользовательского виджета можно разбить на несколько основных задач:

Создание в конструкторе необходимых графических объектов и сохранение их в переменной экземпляра. Создание в классах Canvas или Composite получателя запросов dispose, служащего для освобождения этих объектов после уничтожения виджета.

Добавление paintListener в класс Canvas или Composite и оформление виджета согласно вашим предпочтениям. Если виджет составной, то можно оптимизировать этот процесс и не делать лишнюю работу, рассчитывая и оформляя только то, что необходимо.

Проверка перерисовки виджета при использовании вызовов API, влияющих на его внешний вид. Вообще, для перерисовки виджета следует не вызывать напрямую перерисовывающий код, а пользоваться методом redraw, служащим для уничтожения виджета и перерисовки его заново. При таком подходе платформа может собрать ваш запрос на прорисовку и другие аналогичные ожидающие запросы в один запрос, таким образом, ускоряя выполнение кода.

Если в API виджета объявлены события, то необходимо указание событий низкого уровня классов Canvas или Composite, которые будут их

32

Соседние файлы в папке ООП