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).

Книга "Грязные богатые клиенты" полезна, только если:

  1. ты хорошо знаешь Swing
  2. Вы хотите создавать "модные" графические интерфейсы

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:

  1. Swing Application Framework - это легкая среда, которая упрощает создание и поддержку приложений Java для малого и среднего размера. Каркас состоит из библиотеки классов Java, которая поддерживает конструкции для таких вещей, как:

    • Запоминание состояния между сессиями.
    • Упрощенное управление действиями, включая запуск в качестве фоновых задач и указание поведения блокировки.
    • Улучшенное управление ресурсами, включая внедрение ресурсов для свойств bean-компонентов.

    Вот статья об этом. Он был интегрирован с Netbeans 6.0 и более поздними версиями.

  2. EventBus - это ориентированная на Swing среда издателя-подписчика, которую я нашел очень полезной для обновления графических интерфейсов.

Не совсем инструмент, но я работаю над тем, чтобы комментировать важные вещи в JavaDocs для Swing (и некоторых других API). Слишком много методов содержат сюрпризы типа "не вызывайте это, если вы хотите обновить, вместо этого вызовите X". Я использую инструмент, который я построил для своей докторской диссертации, чтобы получить доступ к такой информации (он выделяет вызовы в исходном коде для методов, которые имеют такие вещи).

ИМХО, JavaDocs для свинга сложны в использовании, потому что они объединяют информацию, предназначенную для людей, использующих объект, и людей, подклассифицирующих существующие классы.

Для книг, посмотрите на ответы на Swing Programming Books.

Другие вопросы по тегам