Статьи

Swing Renaissance — классные примеры пользовательского интерфейса Java

В настоящее время существует два популярных инструментария для создания графических пользовательских интерфейсов в Java: Swing (от Sun) и Standard Widget Toolkit (SWT) (от IBM / Eclipse). У разных разработчиков часто бывают сильные мнения о том, что лучше, но на самом деле у них обоих есть свои сильные стороны.

свинг

Swing, часть Java Foundation Classes (JFC), впервые представленная в Java 2 (J2SE 1.2), является «официальной» (если хотите) платформой GUI для Java. Он встроен в настольную версию Java (J2SE). Подход Swing заключается в том, чтобы сделать компоненты пользовательского интерфейса (виджеты) максимально настраиваемыми и расширяемыми без ущерба для межплатформенной согласованности.

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

Результатом этого является то, что все его компоненты полностью скины, и могут быть расширены с пользовательским внешним видом и поведением. Недостатком является то, что пользовательский интерфейс часто не совсем соответствует внешнему виду операционной системы (хотя Sun становится все лучше и лучше в этом). Кроме того, API может стать довольно сложным, как только вы захотите сделать что-то не совсем стандартное, из-за удивительной гибкости Swing.

Кроме того, из-за сложности Swing новичкам легко поступать «неправильно», создавая приложения, которые работают, но кажутся медленными или не реагируют на запросы пользователей.

Поскольку Swing встроен в Java, он идеально подходит для ситуаций, когда размер приложения должен быть минимальным, а межплатформенное развертывание должно быть полностью прозрачным. По этой причине Swing остается лучшим выбором для веб-разработчиков, которым необходимо создавать апплеты или приложения, запускаемые через Java Web Start .

SWT

С точки зрения разработчика приложений, SWT является гораздо более простым API для создания графических интерфейсов в Java. Вместо того чтобы избегать функций собственного пользовательского интерфейса операционной системы, он охватывает их, используя собственные виджеты для обеспечения оптимальной производительности и простоты кодирования. SWT был впервые разработан для использования в проекте Eclipse , но с тех пор разработчики использовали его для создания всевозможных настольных приложений.

Достоинства SWT очевидны: это простой API для написания, что означает, что вы можете быстрее получать впечатляющие результаты, а поскольку все виджеты обрабатываются собственной операционной системой, пользователи найдут интерфейс и поведение интерфейса полностью знакомыми. Также проще добиться хорошей производительности интерфейса (т.е. времени отклика) с помощью SWT.

В зависимости от типа разработки, которую вы делаете, недостатки SWT могут быть либо незначительными, либо нарушать условия сделки. Сложно и обычно нецелесообразно расширять виджеты SWT с помощью пользовательских функций. Поскольку SWT использует собственные функциональные возможности операционной системы, приложение SWT должно быть связано с собственными библиотеками, которые взаимодействуют с операционной системой, в которой будет выполняться программа. Это означает, что вам обычно придется распространять разные версии вашего приложения для Windows, Linux с GTK, Linux с Motif и Mac OS X. Из-за размера библиотек развертывание апплетов, использующих SWT, обычно нецелесообразно, и поддержка Java Web Start проблематична.

Свинг Ренессанс

Хотя какое-то время казалось, что Swing стоит на месте, в то время как SWT, новичок в этом блоке, привлек все внимание, Swing переживает ренессанс, поскольку любопытные разработчики изучают диапазон настройки и наглядность, которые могут быть реализованы с помощью компонентов Swing UI.

Вот несколько моих любимых примеров:

  • Создание настраиваемого делегата пользовательского интерфейса для JTabbedPane
    Внедряет «мини-вкладки» в стиле Adobe, демонстрируя, как легко изменить внешний вид виджета, не реализуя весь внешний вид.
  • Данные Советы
    Более гладкая, чем в большинстве собственных реализаций, при наведении курсора мыши отображается полная метка для элемента списка, когда он обрезается по ширине списка.
  • Помогите своей полке (диалог ожидания для Swing)
    Хотя этот пример немного бесполезен, в этом примере только поверхностно вид лакомого глаза, которого можно достичь, смешивая эффекты Java2D с компонентами Swing.
  • Качаем в 3D
    Если только доказать, что ограничений нет, этот пример демонстрирует внешний вид Swing, который появляется в 3D при просмотре в 3D-очках!

Отличным местом для просмотра последних практических и не очень практичных экспериментов на Swing является блог на ClientJava.com .