- •Обозначения и сокращения
- •Введение
- •1 Простое SWT приложение
- •1.1 Создание приложения
- •1.2 Запуск SWT программы из командной строки
- •1.3 Структура приложения
- •1.4 Слушатели событий
- •1.5 Работа с подпроцессами
- •1.5.1 Диспетчеризация внутренних событий
- •1.5.2 Нить пользовательского интерфейса SWT
- •1.5.3 Выполнение кода за пределами нити UI
- •1.5.4 Рабочая среда и нити
- •2 Элементы управления
- •2.1 Стандартные виджеты
- •2.2 Пользовательские виджеты
- •2.3 Класс Label
- •2.3.1 Стили
- •2.3.2 Текст
- •2.3.3 Изображение
- •2.3.4 Разделители
- •2.3.5 Выравнивание
- •2.3.6 Перенос слов текста
- •2.3.7 Пример использования этикеток
- •2.4 Класс Text
- •2.5 Класс Button
- •2.5.1 Стили
- •2.5.2 Текст
- •2.5.3 Изображение
- •2.5.4 Выравнивание
- •2.5.5 Push Button
- •2.5.6 Toggle Button
- •2.5.7 Check Box
- •2.5.8 Radio Button
- •2.5.9 Selection (выбор)
- •2.5.10 Указание используемой по умолчанию кнопки
- •2.6 Класс List
- •2.6.1 Стили
- •2.6.2. Добавление элементов в список
- •2.6.3. Удаление элементов из списка
- •2.6.4 Получение элементов списка
- •2.6.5 Настройка значений элементов
- •2.6.6 Поиск элементов
- •2.6.7 Выбор элементов списка
- •2.6.8 Обработка событий списка List
- •2.7 Класс Link
- •2.7.1 Стили
- •2.7.2. Текст
- •2.7.3. Обработчики событий
- •2.8 Класс Table
- •2.9 Класс TableColumn
- •2.10 Класс TableItem
- •2.11 Класс Item
- •2.12 Класс Combo
- •2.13 Класс FileDialog
- •2.14 Класс Menu
- •2.15 Класс MenuItem
- •2.16 Класс MessageBox
- •2.17 Класс TabFolder
- •2.18 Class TabItem
- •3 Макеты
- •3.1 Класс FillLayout
- •3.2 Класс GridLayout
- •3.3 Класс GridData
- •3.4 Класс RowLayout
- •3.5 Класс RowData
- •3.6 Класс FormLayout
- •3.7 Класс FormAttachment
- •3.8 Класс FormData
- •4 Графика
- •4.1 Класс GC
- •4.2 Класс Canvas
- •5 Пакет printing
- •5.1 Класс PrintDialog
- •5.2 Класс Printer
- •5.3 Класс PrinterData
- •6 Пакет events
- •6.1 Класс Event
- •7 Разработка приложений
- •8 Разработка новых компонент
- •9 Дополнительные возможности библиотеки SWG
- •9.1 Компоненты управления
- •9.2 Виджеты
- •9.3 Плоские формы
- •9.4 Линии, точки и ломанные
- •9.5 Класс PathShape
- •10 Анимация
- •10.1 Типы анимации
- •10.2 Анимация во времени
- •10. 3 Поддержка времени
- •10.4 Пример приложения с элементами анимации
- •Список использованных источников
класса Button. Если кнопка типа ARROW, то возвращается одно из направлений стрелки (UP – вверх, DOWN – вниз, LEFT – влево или RIGHT – вправо).
Замечание: Выравнивание редко используется в компонентах класса Button. По умолчанию используется предпочтительное значение для конкретной операционной системы.
2.5.5 Push Button
Данный тип кнопки используется по умолчанию. При нажатии на нее кнопка переходит с состояние "нажата" и обычно обрабатывается некоторое событие. При отпускании кнопка возвращается в состояние "отжата".
Пример. Программа создания кнопки типа PUSH и обработки ее нажатия
public void testPushButton() {
Button button = new Button(shell, SWT.NONE); button.setText("кнопка Push"); button.pack();
button.addSelectionListener(
new org.eclipse.swt.events.SelectionAdapter() { public void widgetSelected(
org.eclipse.swt.events.SelectionEvent e) { MessageBox messageBox = new MessageBox(shell); messageBox.setMessage("Кнопка нажата"); messageBox.open();
}
});
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) { display.sleep();
}
}
}
2.5.6 Toggle Button
Toggle Button это разновидность кнопки Push Button. Если установлен флаг SWT.TOGGLE, то при нажатии на кнопку она переходит в состояние "нажата" и остается в таком состоянии до следующего нажатия. Данный вид кнопок используется в качестве альтернативы флажковым переключателям так как обладают двумя устойчивыми состояниями (эффект триггера). Для улучшения восприятия можно в обработчике нажатия кнопки менять
44
изображение, которое наглядно показывает состояние кнопки в соответствии с функцией кнопки в программе.
Пример. Модуль, демонстрирующий состояние кнопки типа SWT.TOGGLE с помощью изображений
buttonSwitch = new Button(shell, SWT.TOGGLE); buttonSwitch
.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) {
if (buttonSwitch.getSelection()) { buttonSwitch.setImage(new Image(Display
.getCurrent(), getClass()
.getResourceAsStream(
"/by/bs/swt/images/on.png")));
} else {
buttonSwitch.setImage(new Image(Display
.getCurrent(), getClass()
.getResourceAsStream(
"/by/bs/swt/images/off.png")));
}
}
});
buttonSwitch.setImage(new Image(Display.getCurrent(), getClass()
.getResourceAsStream("/by/bs/swt/images/off.png")));
buttonSwitch.pack();
Пример. Программа использования кнопки типа SWT.TOGGLE для имитации поведения реальных кнопок радиоприемника
group = new Group(shell, SWT.NONE); group.setText("Канал 1"); group.setLayout(new FillLayout());
Listener changeChannelListener = new Listener() { public void handleEvent(Event e) {
Control[ ] children = group.getChildren(); for (int i = 0; i < children.length; i++) {
Control child = children[i];
if (e.widget != child && child instanceof Button
&& (child.getStyle() & SWT.TOGGLE) != 0) {
((Button) child).setSelection(false);
}
}
((Button) e.widget).setSelection(true); group.setText("Канал " + ((Button) e.widget).getText());
}
45
};
for (int i = 0; i < 5; i++) {
Button button = new Button(group, SWT.TOGGLE); if (i == 0) {
button.setSelection(true);
}
button.setText("" + (i + 1)); button.addListener(SWT.Selection, changeChannelListener);
}
group.pack();
Рисунок 2.1 – Имитация поведения кнопок радиоприемника
2.5.7 Check Box
Флажковый переключатель Check Box чаще всего используется для установки или сброса логических состояний нужных параметров (флагов) программы.
Пример. Блок кода создания Check Box кнопок
shell.setLayout(new GridLayout());
Button checkBoxRed = new Button(shell, SWT.CHECK); checkBoxRed.setText("Красный");
Button checkBoxGreen = new Button(shell, SWT.CHECK); checkBoxGreen.setText("Зеленый"); checkBoxGreen.setSelection(true);
Button checkBoxBlue = new Button(shell, SWT.CHECK); checkBoxBlue.setText("Голубой");
Рисунок 2.2 – Кнопки типа SWT.CHECK
46
2.5.8 Radio Button
Для создания радиокнопок используется стиль SWT.RADIO. Данный вид кнопок используется для выбора только одной кнопки из множества входящих в группу. Группа кнопок для выбора определяется общим родительским компонентом. При выборе (selection) одной из кнопок остальные кнопки в группе становятся не выбранными. В определенный момент времени может быть выбрана только одна кнопка.
Пример. Тестовая программа демонстрации SWT.RADIO кнопок shell.setLayout(new FillLayout());
Group group = new Group(shell, SWT.NONE);
Button radioButton = new Button(group, SWT.RADIO); radioButton.setText("Один");
Button radioButton1 = new Button(group, SWT.RADIO); radioButton1.setText("Два"); radioButton1.setSelection(true);
Button radioButton2 = new Button(group, SWT.RADIO); radioButton2.setText("Три");
group.setLayout(new GridLayout());
Group group2 = new Group(shell, SWT.NONE);
Button radioButton3 = new Button(group2, SWT.RADIO); radioButton3.setText("Красный"); radioButton3.setSelection(true);
Button radioButton4 = new Button(group2, SWT.RADIO); radioButton4.setText("Зеленый");
Button radioButton5 = new Button(group2, SWT.RADIO); radioButton5.setText("Голубой"); group2.setLayout(new GridLayout());
Рисунок 2.3 – Радиокнопки сгруппированные в разные контейнеры
2.5.9 Selection (выбор)
Метод public void setSelection (boolean selected)
устанавливает состояние выбора для кнопок типов CHECK, RADIO и TOGGLE.
Если кнопка типа CHECK или RADIO, то при selected равном true они включаются (состояние checked). При selected равном false они выключаются (состояние unchecked).
47