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

Суханов Владимир Иванович

ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ ИНТЕРФЕЙСОВ НА ЯЗЫКЕ JAVA С ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ SWG

© Суханов В.И. 2007 - 2008

Екатеринбург 2008

АННОТАЦИЯ

Приведены основные справочные материалы по использованию библиотеки SWT/SWG при разработке полнофункциональных приложений с графическим интерфейсом на языке Java в среде Eclipse. Материал сопровождается достаточным числом примеров. Приведены примеры полных приложений с подробными комментариями. Книга полезна прикладным программистам, осваивающим технологии Java и студентам компьютерных специальностей колледжей и вузов.

© Суханов В.И. 2007 - 2008

3

Оглавление

 

Обозначения и сокращения............................................................................

7

Введение...........................................................................................................

8

1 Простое SWT приложение.........................................................................

14

1.1

Создание приложения...........................................................................

14

1.2

Запуск SWT программы из командной строки...................................

16

1.3

Структура приложения ........................................................................

17

1.4

Слушатели событий..............................................................................

20

1.5

Работа с подпроцессами ......................................................................

23

1.5.1 Диспетчеризация внутренних событий........................................

24

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

24

1.5.3 Выполнение кода не в нити UI......................................................

25

1.5.4 Рабочая среда и нити......................................................................

26

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

28

2.1

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

28

2.2

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

30

2.3

Класс Label.............................................................................................

33

2.3.1 Стили...............................................................................................

33

2.3.2 Текст................................................................................................

34

2.3.3 Изображение...................................................................................

35

2.3.4 Разделители.....................................................................................

35

2.3.5 Выравнивание.................................................................................

35

2.3.6 Перенос слов текста.......................................................................

36

2.3.7 Пример использования этикеток..................................................

36

2.4

Класс Text...............................................................................................

36

2.5

Класс Button...........................................................................................

40

2.5.1 Стили...............................................................................................

41

2.5.2 Текст................................................................................................

43

2.5.3 Изображение...................................................................................

43

2.5.4 Выравнивание.................................................................................

43

4

2.5.5 Push Button......................................................................................

44

2.5.6 Toggle Button...................................................................................

44

2.5.7 Check Box........................................................................................

46

2.5.8 Radio Button.....................................................................................

47

2.5.9 Selection (выбор).............................................................................

47

2.5.10 Указание используемой по умолчанию кнопки........................

48

2.6 Класс List............................................................................................

49

2.6.1 Стили...............................................................................................

49

2.6.2. Добавление элементов в список...................................................

50

2.6.3. Удаление элементов из списка.....................................................

50

2.6.4 Получение элементов списка........................................................

51

2.6.5 Настройка значений элементов.....................................................

51

2.6.6 Поиск элементов.............................................................................

52

2.6.7 Выбор элементов списка................................................................

52

2.6.8 Обработка событий списка List.....................................................

55

2.7 Класс Link...........................................................................................

56

2.7.1 Стили...............................................................................................

56

2.7.2. Текст...............................................................................................

56

2.7.3. Обработчики событий...................................................................

57

2.8 Класс Table ...........................................................................................

58

2.9 Класс TableColumn................................................................................

62

2.10

Класс TableItem....................................................................................

64

2.11

Класс Item.............................................................................................

66

2.12

Класс Combo........................................................................................

67

2.13

Класс FileDialog...................................................................................

71

2.14

Класс Menu...........................................................................................

73

2.15

Класс MenuItem...................................................................................

76

2.16

Класс MessageBox...............................................................................

78

2.17

Класс TabFolder...................................................................................

79

2.18

Class TabItem........................................................................................

81

3 Макеты ........................................................................................................

83

 

5

 

3.1

Класс FillLayout.....................................................................................

84

3.2

Класс GridLayout...................................................................................

86

3.3

Класс GridData.......................................................................................

87

3.4

Класс RowLayout...................................................................................

92

3.5

Класс RowData.......................................................................................

94

3.6

Класс FormLayout..................................................................................

95

3.7

Класс FormAttachment...........................................................................

99

3.8

Класс FormData....................................................................................

101

4 Графика......................................................................................................

103

4.1

Класс GC..............................................................................................

108

4.2

Класс Canvas........................................................................................

117

5 Пакет printing............................................................................................

121

5.1

Класс PrintDialog.................................................................................

121

5.2

Класс Printer.........................................................................................

122

5.3

Класс PrinterData..................................................................................

123

6 Пакет events ..............................................................................................

126

6.1

Класс Event...........................................................................................

129

7 Разработка приложений...........................................................................

132

8 Разработка новых компонент..................................................................

149

9 Дополнительные возможности библиотеки SWG.................................

156

9.1

Компоненты управления.....................................................................

156

9.2

Виджеты...............................................................................................

157

9.3

Плоские формы....................................................................................

158

9.4

Линии, точки и ломанные...................................................................

160

9.5

Класс PathShape...................................................................................

162

10 Анимация................................................................................................

164

10.1 Типы анимации..................................................................................

164

10.2 Анимация во времени.......................................................................

165

10.

3 Поддержка времени..........................................................................

171

10.4 Пример приложения с элементами анимации................................

172

Список использованных источников.........................................................

192

 

6

 

Обозначения и сокращения

ООП – объектно-ориентированное программирование ОС – операционная система

API – Application Programming Interface, программный интерфейс разработчика приложений

AWT –Abstract Windowing Toolkit, общая библиотека элементов

GUI – Graphic User Interface, графический интерфейс с пользователем JRE – Java Runtime Enviroment, среда исполнения программ на языке Java SWT – Standard Widget Toolkit, стандартная библиотека элементов

UI – User Interface, интерфейс с пользователем

7

Введение

Доминирующей технологией разработки программ последних лет стало объектно-ориентированное программирование – ООП. Общие концепции объектно-ориентированного программирования включают:

-инкапсуляцию (incapsulation);

-наследование (inheritance);

-полиморфизм (polymorphy)

На следующей диаграмме (рисунок 1) демонстрируются основные черты ООП при создании класса потомка.

Поля

Поля родителя

+

Новые поля

Методы

Методы родителя

 

Перегруженные

 

Новые методы

Класс «Родитель»

Класс «Потомок»

Рисунок 1 – Диаграмма наследования

Инкапсуляция предполагает сокрытие в объекте как в оболочке всех определенных в описании класса данных (атрибутов, полей) и методов. Инкапсуляция позволяет, отладив функции объекта, использовать его в любом окружении, не рискуя потерять функциональность.

Наследование – инструмент реализации идеи повторного использования кода при адаптации объекта к новым задачам. В этом случае в дополнение к родительским в дочернем классе разрешено объявлять новые поля и методы и переопределять (перегружать, перекрывать) часть родительских методов.

8

Полиморфизм в самом общем виде определяется как влияние окружения фрагмента на поведение этого фрагмента. Полиморфизм является следствием разрешения в разных классах использовать методы с одинаковыми именами и параметрами, возможно разных типов и состава. Наиболее ярко это наблюдается при перекрытии родительских методов у потомков. Например, при наличии экземпляров родителя и потомка и перегрузки потомком метода a(…) будет наблюдаться следующее поведение:

exPar.a(…)

– работает метод родительского класса

exChild.a(...)

– работает метод дочернего класса

Демонстрационный пример: package Polimorf;

class A {

int p1 = 111; void m1() {

System.out.println("Метод m1 класса А"); m2();

}

// Если m2 сделать static - из m1() не будет вызываться

перекрытый метод m2 в классах потомках void m2() {

System.out.println("Метод m2 класса А p1=" + p1);

}

}

class B extends A { int p2 = 222;

// static void m2() { void m2() {

System.out.println("Метод m2 класса B p1=" + p1 + " p2=" + p2

);

}

}

public class TestPoli {

public static void main(String[ ] args) {

A a = new A();

 

B b = new B();

 

a.m1();

// Метод m1 класса А

a.m2();

// Метод m2 класса А

b.m1();

// Метод m2 класса A или B в зависимости от

 

//

модификатора типа - static

b.m2();

// Метод m2 класса B

}

}

9

Результаты работы программы:

Метод m1 класса А

Метод m2 класса А p1=111

Метод m2 класса А p1=111

Метод m1 класса А

Метод m2 класса B p1=111 p2=222

Метод m2 класса B p1=111 p2=222

Материал книги рассчитан на программистов, владеющих языком Java и желающих освоить разработку приложений с использованием графических интерфейсов с пользователем (GUI), создаваемых на основе стандартной библиотеки классов SWT (Standard Widget Toolkit). После овладения основами языка Java следующим этапом в подготовке программистов является изучение инструментов разработки самостоятельных полнофункциональных приложений (standalone) с использованием графического интерфейса с пользователем. Программирование приложений с использованием графического интерфейса существенно отличается от приложений командной строки, где всякое взаимодействие с внешним миром управляется программой. Типичным сценарием консольных приложений является запрос исходных данных у пользователя или из других источников, ввод ответа пользователя с данными, расчет и вывод результатов. Современные графические системы позволяет программировать приложения с использованием событий и их обработчиков. Такой стиль называют событийным программированием. Примером операционной системы (ОС), использующей и поддерживающей графический интерфейс, является MS Windows или оболочка XWindows ОС Unix/Linux.

MS Windows создана для поддержки объектно-ориентированных технологий программирования, в которых программа синтезируется из объектов, взаимодействующих между собой через сообщения. Окна являются как раз объектами такого рода. На рисунке 2 приведена схема взаимодействия прикладной программы с MS Windows.

10

Приложение

ОС Windows

 

Регистрация

Список классов

 

класса окна

окон

 

Создание и

Системная

События

показ окна

очередь

 

Цикл

Очередь

 

обработки

приложения

 

сообщений

 

Окно

 

 

 

 

приложения

Функция

 

 

окна

Стандартная

 

 

обработка

 

Рисунок 2 – Взаимодействие приложения с операционной системой

С каждым окном приложения связана функция обработки сообщений, адресованных этому окну от различных источников. Источниками сообщений могут быть драйверы клавиатуры и мышки, реагирующие на манипуляции пользователя с клавишами или элементами управления на экране, MS Windows, другие обработчики сообщений приложения, в том числе и другие приложения. Перечень системных сообщений в MS Windows фиксирован и составляет более 120 наименований, что покрывает все потребности взаимодействия объектов. По желанию прикладной программист может определить свои собственные сообщения, необходимые для взаимодействия программ внутри приложения.

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

Графические подсистемы различных операционных систем предоставляют прикладным программистам набор своих собственных стандартных окон и средств управления ими, что составляет программный интерфейс разработчика приложений (API). Разные ОС, к сожалению,

11

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

Первой Java библиотекой классов для построения графического интерфейса с пользователем была созданная корпорацией Sun Microsystems библиотека AWT (Abstract Windowing Toolkit). Данный набор в основном был ориентирован на использование компонент конкретных операционных систем. Так как язык Java позиционируется как независимый от платформы инструмент программирования, то для разработки графических интерфейсов тоже потребовалось обеспечить кроссплатформенность. Но так как в различных ОС реализация графических компонент отличается как по составу, так и по функциональности, в AWT были оставлены основные компоненты, составляющие ядро большинства ОС. Это значительно обеднило возможности разработки полнофункциональных приложений, особенно в части отображения и ввода данных в табличном формате и ряде других.

Для решения данной проблемы в результате взаимодействия компаний Sun и IBM была создана кроссплатформенная библиотека классов SWT для программирования графических интерфейсов с пользователем. В SWT, как и в AWT, где это возможно, используются компоненты операционной системы. Если какого либо элемента нет в конкретной ОС, то он эмулируется средствами языка Java. Таким образом, получилась эффективная кроссплатформенная библиотека компонент, которые обладают функциями собственных компонент операционной системы.

Библиотеку SWT можно использовать для разработки приложений на платформе Eclipse [2 – 4], а также и для любой среды разработки Javaприложений Integrated Development Environment (IDE), например Oracle Java Developer или Borland Java Builder. Для этого достаточно включить необходимые библиотеки SWT в состав Java-приложения. Оболочка SWT поддерживает большинство популярных операционных систем. Так же существует возможность компиляции SWT Java приложений в бинарный код ЭВМ, что повышает производительность созданных приложений и не требует установки Java-машины – Java Runtime Environment (JRE). Такие приложения ничем не отличаются от приложений конкретной операционной системы, а использование современных IDE позволяет быстро создавать качественные кроссплатформенные продукты для различных операционных систем.

Библиотека SWT содержит следующие основные пакеты:

- org.eclipse.swt – включает предустановленные константы, классы исключений и ошибок;

12

- org.eclipse.swt.widgets – включает в основном визуальные компоненты;

- org.eclipse.swt.events – включает классы и интерфейсы обработки событий;

-org.eclipse.swt.dnd – включает классы поддержки drag-and-drop;

-org.eclipse.swt.layout – включает классы менеджеров размещения

компонент;

-org.eclipse.swt.printing – включает классы поддержки печати;

-org.eclipse.swt.graphics – включает классы, обеспечивающие

работу с графикой.

Материал книги в основном ориентирован на использование среды разработки Eclipse. Приведенные примеры опробованы в версии 3.2.

13

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