Библиотека SWT (Standard Widget Toolkit)

SWT библиотека представляет собой кросс-платформенную оболочку для графических библиотек конкретных операционных систем. SWT разработана с использованием стандартного языка Java и получает доступ к специфичным библиотекам различных ОС через JNI (Java Native Interface), который используется для доступа к родным визуальным компонентам операционной системы.

Библиотека SWT является библиотекой с открытым исходным кодом и предназначена для разработки графических интерфейсов приложений на языке Java. Лицензируется SWT под Eclipse Public License, предназначенной для открытого ПО.

SWT позволяет получать привычный внешний нтерфейс программы в соответствующей операционной системе и является альтернативой библиотекам AWT и Swing. Java-приложение с использованием SWT более эффективна по сравнению с AWT и Swing. Но при этом появляется зависимость от операционной системы и оборудования.

IDE Eclipse

Корпорация IBM, имея опыт разработки VisualAge/SmallTalk, инициировала проект по разработке универсальной платформы для создания java приложений IDE Eclipse. В процессе разработки IDE (Integrated Development Enviroment) Eclipse была разработана новая графическая библиотека, получившая название Standard Widget Toolkit (SWT).

Библиотеку SWT можно использовать не только для разработки приложений в IDE Eclipse, но также в других средах. Для этого достаточно включить SWT в состав java приложения.

Библиотека SWT поддерживает большинство популярных операционных систем. Также существует возможность компиляции SWT java приложений в нативный бинарный код, что повышает производительность созданных приложений и не требует установки java машины - Java Runtime Enviroment (JRE). Такие приложения ничем не отличаются от нативных приложений конкретной операционной системы, а использование современных IDE позволяет быстро создавать качественные кросс платформенные продукты для различных операционных систем.

Дистрибутив библиотеки SWT для различных ОС можно скачать на сайте http://www.eclipse.org/swt/.

Создание проекта с использованием SWT в IDE Eclipse

Библиотека SWT входит в состав IDE Eclipse и располагается в поддиректории plugins. К проекту можно подключить как "родную" библиотеку Eclipse, так и "внешнюю" с учетом программно-аппаратной части ОС, в которых приложение будет работать. Подключить библиотеку SWT к проекту в IDE Eclipse можно несколькими способами.

Подключение SWT из директории plugins среды Eclipse

Для подключения SWT из директории plugins среды Eclipse необходимо открыть форму настроек проекта. Для этого следует выделить проект, вызвать всплывающее меню правой клавишей мыши и выбрать пункт «Properties», либо нажать горячие клавиши «Alt-Enter». В открывшейся форме следует выбрать вкладку «Libraries», нажать кнопку «Add External Jars...» и выбрать библиотеку SWT из директории plugins среды Eclipse.

Подключение к проекту дистрибутива SWT

Дистрибутив поставляется в виде архива zip. Его необходимо "развернуть" и импортировать в IDE Eclipse как "Existing Projects into Workspace".

В результате в дереве проектов вкладки "Package Explorer" IDE Eclipse проект библиотеки SWT будет иметь структуру как на следующем скриншоте.

После этого библиотеку SWT можно подключать к проектам. Для это следует в форме настроек проекта на вкладке "Projects" нажать кнопку "Add" и в отдельном окне добавить к проекту библиотеку SWT в виде дополнительного проекта (org.eclipse.swt).

Проект в IDE Eclipse с использованием SWT

Пример java проекта "Test" в IDE Eclipse, использующего библиотеку SWT, представлен на следующем скриншоте.

Объект Display, используемый в java-приложениях с SWT, в интерфейсе не виден, но нужен для того, чтобы отображать графические визуальные компоненты, расположенные на нем.

Объект Shell - это окно в приложении. Для отображения графического интерфейса приложения необходимо открыть Shell и создать цикл отслеживающий уничтожение окна. В приложении может быть создано несколько экземпляров Shell.

Почти все графические интерфейсы java-приложения с SWT создаются из нескольких основных частей. Все SWT widgets могут быть найдены в пакетах org.eclipse.swt.widgets или org.eclipse.swt.custom (некоторые плагины Eclipse также предоставляют кастомизируемые widgets в других пакетах).

Практически все элементы управления в SWT имеют в конструкторе родительский объект. При инициализации элементы управления автоматически добавляются к предку, в то время как в AWT/Swing они должны быть явно указаны, реализуя нисходящий способ реализации графических интерфейсов. Таким образом, все элементы управления в SWT получают композитный родительский класс (или внутренний класс), как аргумент конструктора.

Большинство SWT элементов имеют опции флага, которые часто называют "Стилем". Все значения стиля имеют тип static final int и описываются в классе SWT в пакете org.eclipse.swt. Если флаг/стиль не требуется, необходимо использовать значение SWT.NONE.

SWT, JFace, widget

Библиотека SWT использует основные widgets (виджеты) операционной системы. Во многих IDE такой подход к разработке является слишком низкоуровненным. Дополнительно совместно с SWT используется библиотека JFace, предоставляя java приложениям с библиотекой SWT многочисленные сервисы.

Виджет widget

С точки зрения программного приложения widget («виджет») - это элемент графического интерфейса, имеющий стандартный внешний вид и выполняющий стандартные действия. Под виджет'ом подразумеваются окно (диалоговое, модальное), кнопка (стандартная, радиокнопка, флаговая), список (иерархический, раскрывающийся) и т.д.

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

Библиотека JFace

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

JFace — это набор java-классов, реализующих наиболее общие задачи построения GUI. С точки зрения разработки java-приложения JFace представляет собой дополнительный программный слой над SWT, который реализует шаблон Model-View-Controller. JFace реализует следующие возможности:

  • представление «Viewer» классов, отвечающих за отображение и реализующих задачи по заполнению, сортировке, фильтрации;
  • представление «Action» классов, позволяющих определять "поведение" отдельных widget'ов, таких как пункты меню, кнопки, списки и т.п.;
  • представление регистров, содержащих шрифты и изображения;
  • представление набора стандартных диалоговых окон и виджетов для взаимодействия с пользователем.

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

Основной задачей группы разработчиков Eclipse было сокрытие реализации компонентов графического интерфейса построенных на основе библиотеки SWT и по возможности максимальное использование библиотеки JFace как более высокоуровневой и простой в использовании.

Библиотека SWT не зависит от JFace, но JFace использует SWT. Тем не менее, IDE Eclipse построена с использованием обеих библиотек, но в некоторых случаях SWT используется напрямую в обход JFace.

Используемая в SWT терминология

  • Widget – основной компонент графического интерфейса SWT (сродни компоненту в пакете Java AWT и JComponent в Swing). Widget является абстрактным классом.
  • Composite (композит) – это элемент управления, который может заключать в себе другие элементы. Аналог контейнеру в пакете Java AWT и JPanel пакета Swing.
  • Object (объект) – это родительский класс других элементов (которые могут и не быть композитами), например, таких как, список или таблица. Объект является абстрактным классом.
  Рейтинг@Mail.ru