Ресурсы и ссылки 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
Сайт Джонатана Гилза. Хорош тем, что Джонатан регулярно собирает и систематизирует ссылки на все блоги, статьи, новости, относящиеся к 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