Ресурсы и ссылки Java Swing

December 20, 2017
java swing

В данном разделе будут доступны некоторые доказавшие свою полезность и эффективность инструменты, не вошедшие в книги или вошедшие в усеченном варианте, и описание других сторонних библиотек, которые могут быть полезны при создании быстрых и эффектных интерфейсов на Java/Swing, а также советы по ним. Также здесь можно найти ссылки на самые интересные статьи, комментарии и конечно блоги, где люди, имеющие отношение к пользовательским интерфейсам, обсуждают последние тренды.

Внешний вид Substance

Прекрасный внешний вид для Swing, немного “нестадартный” в цветах и размерах компонентов, и очень сильно ориентированный на анимационные эффекты, простые, но хорошо заметные. Одним из самых главных его свойств является строгое слежение за выполнением краеугольного закона Swing - “Компоненты Swing работают только с потоком рассылки событий”. Если программа обращается к компоненту Swing из другого потока, библиотека Substance “выбросит” исключение, что делает ее прекрасным инструментом для тестирования ваших приложений, а не только замечательным внешним видом.

Найти последние версии внешнего вида Substance можно на https://github.com/kirill-grouchnikov/substance. Похоже что в Maven их не выкладывают, поэтому берите последние версии в Github, в папке drop.

FilterHeader от Coderazzi

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

Для многих прекрасным примером реализации гибкой таблицы является Google Sheets/Microsoft Excel, который способен для каждого столбца показать гибкий фильтр с выпадающим списком, где вы можете выбрать фильтрацию строк только с определенным значением. Библиотека FilterHeader добавляет к таблицам JTable аналогичную функциональность всего одной строкой. Если вы работаете с большим количеством табличных данных, то пользователи приложения наверняка захотят фильтровать их, и перед написанием своих компонентов опробуйте сначала FilterHeader. Она к тому же доступна через центральный репозиторий Maven. Найти библиотеку FilterHeader можно на http://coderazzi.net/tablefilter/. Там же вы найдете примеры, сможете скачать ее, или узнать как добавить ее в свой Maven-проект.

Можно также почитать мою статью как пример использования FilterHeader

Платформа и IDE: Net Beans

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

Основа основ – оконная система NetBeans, представляющая собой многооконный интерфейс (MDI), который, тем не менее, в разы интереснее и представляет намного больше полезнейших функций в сравнении со стандартным компонентом Swing JDesktopPane. Если вы обдумываете возможность создания приложения с многооконным интерфейсом и большим количеством функциональности, обязательно рассмотрите платформу NetBeans.

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

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

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

Основной сайт NetBeans находится по адресу http://netbeans.org/.

Блог Jonathan Giles

http://jonathangiles.net/blog/

Дневник Джонатана Гилза. Дневник хорош тем, что Джонатан регулярно собирает и систематизирует ссылки на все блоги, статьи, новости, относящиеся к Swing и JavaFX, и выкладет их еженедельно. Хороший способ оставаться в курсе событий не прикладывая много усилий.

Блог Pushing Pixels

http://www.pushing-pixels.org/ Блог создателя впечатляющего своей тонкой анимацией и качеством реализации внешнего вида Substance Кирилла Грушникова

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

FEST - модульное тестирование Swing-приложений

Исходные коды библиотеки FEST можно найти на https://github.com/alexruiz/fest-swing-1.x

Модульное тестирование (unit-tests) - мощнейшее оружие разработчика программного обеспечения. Оно позволяет встать на сторону “пользователя” написанного кода, в случае с библиотекой это будущие программисты-клиенты, а в случае просто делового кода “пользователем” является компьютер, которому предстоит весь представленный код исполнить. Взгляд с другой стороны дает возможность оценить сделанное и проверить каждый, мельчайший аспект написанной функциональности. Любой, мало мальски сложный алгоритм, достоин своего теста, который твердо держит его в корректных рамках и ломается если изменения кода ломают эти рамки.

Модульное тестирование пользовательского интерфейса всегда было большой проблемой, так как чтобы “оживить” интерфейс, необходимо подать на него движения мыши, клавиатуру и вводные данные. Ручное тестирование дорого и пропускает многие внутренние алгоритмы. Существуют разные способы эмуляции действий пользователя, многое мы обсуждали в книгах о Swing. Библиотека FEST дает нам уникальную возможность держать свой Java Swing интерфейс в корректном состоянии с помощью специализированных модульных тестов. Обязательно попробуйте и ваши QA-специалисты будут молить дать им хотя бы одну ошибку.

Swing Explorer

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

Скачать Swing Explorer можно на https://github.com/robotframework/swingexplorer