Рейтинговые книги
Читем онлайн Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 50 51 52 53 54 55 56 57 58 59
создания якорей.

Размещение дочерних компонентов с использованием компоновки FormLayout осуществляется выполнением следующих шагов:

С помощью конструктора создается экземпляр класса FormData.

Класс FormData имеет поля bottom, left, right, top, определяющие прикрепление четырех сторон компонента, а также поля height и width, определяющие предпочтительные размеры компонента.

Определяются значения полей экземпляра класса FormData путем присваивания экземпляров класса FormAttachment.

Экземпляр класса FormAttachment может быть создан с помощью одного из конструкторов.

Экземпляр класса FormData связывается с компонентом с помощью метода setLayoutData суперкласса Control.

Компоновка RowLayout размещает компоненты в строку или столбец и имеет регулировки отступов, выравнивания и типа (горизонтальный или вертикальный).

В отличие от компоновки FillLayout для компоновки RowLayout можно установить перенос на следующую строку или столбец, а размеры компонента могут быть определены путем вызова метода setLayoutData суперкласса Control с аргументом – объектом RowData.

Экземпляр класса RowData создается с помощью конструктора.

Компоновка StackLayout собирает компоненты в стек по оси Z, подгоняя их к одному размеру, и имеет регулировки отступов.

При этом поле topControl определяет, какой компонент находится на вершине стека.

Компоновка FlowLayout представляет собой перенос AWT-компоновки FlowLayout в систему SWT.

Компоновка FlowLayout располагает компоненты аналогично строкам текста в параграфе и имеет регулировки выравнивания и отступов.

Компоновка BoxLayout представляет собой перенос Swing-компоновки BoxLayout в систему SWT.

Компоновка BoxLayout располагает компоненты по оси X или по оси Y в одну строку или столбец без возможности переноса.

Компоновка BorderLayout представляет собой перенос AWT-компоновки BorderLayout в систему SWT.

Компоновка BorderLayout делит контейнер на пять областей – север, юг, восток, запад и центр, в которых и располагает компоненты.

Раздел Controls Palette-палитры предоставляет SWT-компоненты пакетов org.eclipse. swt. widgets, org.eclipse.swt.custom и org.eclipse.swt.browser.

Кроме того, раздел Controls Palette-палитры обеспечивает определение с помощью пакета org.eclipse. swt. dnd источника и цели операции Drag and Drop.

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

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

Так как система SWT представляет собой Java-оболочку библиотеки графических компонентов низлежащей операционной системы, а многие библиотеки интерфейса требуют определения родителя при создании компонента, который, кроме того, имеет свои характеристики (styles), система SWT также определяет создание компонента с помощью конструктора класса, аргументами которого служат – объект родительского компонента и стиль создаваемого компонента, описывающий его поведение и внешний вид.

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

Удаление экземпляров компонентов системы SWT также имеет свою особенность.

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

Для обработки событий компонентов система SWT предлагает два типа слушателей – типизированные и не типизированные слушатели.

Не типизированные слушатели присоединяются к SWT-компоненту методом addListener класса Widget, где параметр eventType – код типа события, определяемый полем класса SWT, а параметр listener – экземпляр класса (как правило, анонимного), реализующего интерфейс Listener с единственным методом handleEvent.

Типизированные слушатели присоединяются к SWT-компоненту методами addХХХListener, где параметр listener – экземпляр класса (как правило, анонимного), реализующего интерфейс ХХХListener с методами обработки конкретного типа событий.

Раздел JFace Palette-палитры обеспечивает использование JFace-компонентов пакетов org.eclipse.jface.viewers, org.eclipse. jface. text и org.eclipse.jface.fieldassist.

JFace-компоненты ComboViewer, ListViewer, TableViewer, TableViewerColumn, CheckboxTableViewer, TreeViewer, TreeViewerColumn, CheckboxTreeViewer и TextViewer представляют собой обертки соответствующих SWT-компонентов, реализуя архитектуру MVC.

При добавлении JFace-компонентов в область визуального редактирования WindowBuilder-редактора отображается SWT-компонент и значок JFace-компонента.

Реализация архитектуры MVC JFace-компонентами заключается в том, что данные и метки компонента определяются отдельно с помощью объектов IContentProvider и IBaseLabelProvider, которые устанавливаются для JFace-компонента методами setContentProvider и setLabelProvider соответственно.

Расширения интерфейса IContentProvider обеспечивают возврат данных для JFace-компонентов. Для дерева – это интерфейс ITreeContentProvider, для списка и таблицы – это интерфейс IStructuredContentProvider.

Расширения интерфейса IBaseLabelProvider обеспечивают возврат меток для элементов JFace-компонентов. Для дерева и списка – это интерфейс ILabelProvider, для таблицы – это интерфейс ITableLabelProvider.

После создания поставщика данных и присоединения его к JFace-компоненту необходимо вызвать метод setInput для загрузки данных.

Кроме того, для вышеуказанных JFace-компонентов с помощью метода setSorter можно определить сортировку, которая обеспечивается объектом ViewerSorter, а с помощью метода setFilters определить фильтрацию, обеспечиваемую объектами ViewerFilter.

JFace-компонент TextViewer также представляет собой обертку SWT-компонента StyledText, реализующую архитектуру MVC.

Реализация архитектуры MVC компонентом TextViewer заключается в том, что документ, т.е. данные для редактирования определяются отдельно с помощью объекта Document, который связывается с TextViewer-компонентом методом setDocument.

Библиотеки org.eclipse. jface. text.* системы JFace позволяют создать на основе компонента TextViewer полнофункциональный редактор, обеспечивающий подсветку текста, форматирование, автодополнение текста, отмену изменений, поиск и замену и так далее.

Раздел Forms API Palette-палитры обеспечивает использование пакета org.eclipse.ui.forms. widgets.

Eclipse-формы представляют способ организации SWT/JFace компонентов таким образом, что конечный интерфейс имеет сходство с Web-страницей.

Такой эффект достигается без использования встроенного Web-браузера за счет применения специального класса FormToolkit для адаптации компонентов к работе в форме, компоновки TableWrapLayout, работающей аналогично HTML-таблице, набора специальных контейнеров и компонентов пакетов org.eclipse.ui.forms. widgets и org.eclipse.ui.forms, а также многостраничного редактора FormEditor.

Раздел Menu Palette-палитры обеспечивает использование различного рода меню пакета org.eclipse. swt. widgets.

И наконец элемент SWT_AWT Composite раздела SWT_AWT Palette-палитры при перетаскивании в область визуального редактирования инициирует генерацию следующего кода.

В данном коде создается SWT-контейнер Composite, с которым связывается AWT-окно Frame с помощью метода new_Frame класса SWT_AWT, служащего мостом между системами SWT и AWT.

Далее окно Frame подготавливается для присоединения AWT и Swing компонентов путем определения для него корневой панели и компоновки.

Элемент Choose Swing Component раздела SWT_AWT Palette-палитры открывает палитру AWT и Swing компонентов для добавления их в окно Frame.

Связывание данных

Платформа Eclipse предоставляет программный интерфейс связывания данных, представленный библиотеками org.eclipse.core. databinding.* и org.eclipse. jface. databinding.*, которые обеспечивают связывание свойств Widget-компонентов и объектов данных.

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

Сам механизм связывания основан на Observer-шаблоне программирования, в котором связываемый объект имеет список своих зависимостей, или объектов-наблюдателей, и уведомляет их автоматически об изменениях своего состояния, вызывая соответствующие методы объектов-наблюдателей.

WindowBuilder-плагин обеспечивает связывание данных с помощью мастера JFace Automating Databinding раздела WindowBuilder | SWT Designer | Databinding команды New, команды Bindings контекстного меню визуальной области редактирования и окна Structure, а также с помощью вкладки Bindings WindowBuilder-редактора, которая имеет функциональность, аналогичную функциональности команды Bindings контекстного меню.

Для

1 ... 50 51 52 53 54 55 56 57 58 59
На этой странице вы можете бесплатно читать книгу Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин бесплатно.

Оставить комментарий