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

класса 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

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