Java Swing: библиотеки, инструменты, менеджеры по расположению
Какие библиотеки / инструменты есть в вашем наборе инструментов Java Swing?
- XUL
- Менеджеры по макету
- Упаковщиков / монтажники
- книги
- так далее.....
7 ответов
Вот что я использую:
- "Framework": Swing Application Framework, не делает много, но делает это хорошо (если вы используете его, вы можете взглянуть на одну презентацию, которую я сделал в прошлом году)
- JTables: обработка таблиц часто является проблемой (много шаблонного кода...); Я обычно использую GlazedLists, который значительно упрощает работу (и приносит много улучшений)
- EventBus: это было упомянуто в другом ответе
- LayoutManager: DesignGridLayout (бесстыдный плагин, это один из моих проектов с открытым исходным кодом)
- Look & Feel: Вещество очень хорошо в некоторых ситуациях, когда вы не хотите использовать внешний вид системы
- Библиотека стыковки: если ваше приложение нуждается в стыковке, вы найдете MyDoggy полезным (и у него есть хорошо написанный API). Одна из проблем - плохая интеграция со сторонним внешним видом (например, Substance).
Все эти библиотеки выше с открытым исходным кодом.
В дополнение к этому у меня есть собственный набор служебных классов, которые, помимо прочего, помогают интегрировать графический интерфейс с библиотекой внедрения зависимостей: у меня есть набор утилит для контейнера HiveMind (для немногих разработчиков, которые знают его и до сих пор используют его).), и еще один - в процессе подготовки, скоро открою источник - для Guice.
Я не читал никакой конкретной книги о разработке Swing, но использую Swing уже около 10 лет (однако не постоянно). Поэтому у меня нет рекомендаций относительно книг (к сожалению, потому что я признаю, что это одно из слабых мест Swing).
Книга "Грязные богатые клиенты" полезна, только если:
- ты хорошо знаешь Swing
- Вы хотите создавать "модные" графические интерфейсы
Spring Rich Client и JGoodies являются основой приложений GUI моей команды; Spring Remoting для подключения к серверу и Java Web Start для развертывания.
Я в значительной степени использую только GridBagLayout для производственного кода, если GUI не настолько прост, что я могу избежать использования BorderLayout. Иногда я заглядываю в другие LayoutManager, но так и не нашел необходимости менять, так как GridBagLayout может делать практически все, что мне нужно.
Установщик, который я использую для своих собственных целей, - это izPack, и он работает для меня до сих пор.
Прошло много времени с тех пор, как я действительно читал любые книги по Swing. Очевидно, что Java Swing от O'Reilly является де-факто библией:) Когда дело доходит до книг по дизайну, у меня есть много рекомендаций, но это может быть не по теме?
NetBeans с редактором GUI WYSIWYG. Это делает создание форм Java 6 Swing очень простым. Я делю формы на подклассы, чтобы добавить функциональность, чтобы обеспечить постоянную поддержку инструментов.
Я также использовал SwingX для виджетов, таких как датчики и складные панели.
Кроме того, в JRE всегда есть SwingWorker для выполнения фоновых заданий, которые обновляют пользовательский интерфейс.
Две полезные библиотеки, связанные с Swing:
Swing Application Framework - это легкая среда, которая упрощает создание и поддержку приложений Java для малого и среднего размера. Каркас состоит из библиотеки классов Java, которая поддерживает конструкции для таких вещей, как:
- Запоминание состояния между сессиями.
- Упрощенное управление действиями, включая запуск в качестве фоновых задач и указание поведения блокировки.
- Улучшенное управление ресурсами, включая внедрение ресурсов для свойств bean-компонентов.
Вот статья об этом. Он был интегрирован с Netbeans 6.0 и более поздними версиями.
EventBus - это ориентированная на Swing среда издателя-подписчика, которую я нашел очень полезной для обновления графических интерфейсов.
Не совсем инструмент, но я работаю над тем, чтобы комментировать важные вещи в JavaDocs для Swing (и некоторых других API). Слишком много методов содержат сюрпризы типа "не вызывайте это, если вы хотите обновить, вместо этого вызовите X". Я использую инструмент, который я построил для своей докторской диссертации, чтобы получить доступ к такой информации (он выделяет вызовы в исходном коде для методов, которые имеют такие вещи).
ИМХО, JavaDocs для свинга сложны в использовании, потому что они объединяют информацию, предназначенную для людей, использующих объект, и людей, подклассифицирующих существующие классы.