Взгляните на Apache Pivot . Это должна быть более современная структура более высокого уровня, чем просто Swing, которая по-прежнему использует Java вместо того, чтобы полностью перейти на JavaFX. Он позиционирует себя как набор инструментов RIA, но с тем же успехом его можно использовать для автономных настольных приложений. С веб-сайта:
Apache Pivot - это платформа с открытым исходным кодом для создания полнофункциональных интернет-приложений на Java. Он сочетает в себе повышенную производительность и удобство использования современного набора инструментов RIA с надежностью платформы Java. Сводные приложения написаны с использованием комбинации Java и XML и могут быть запущены либо как апплет, либо как автономное, опционально автономное настольное приложение. [...] Pivot включает дополнительные функции, которые значительно упрощают создание современных приложений с графическим интерфейсом, включая декларативный интерфейс, привязку данных, эффекты и переходы, а также интеграцию веб-сервисов.
Я не рекомендую использовать инструмент компоновки; код очень трудно читать и поддерживать.
также, если вам нужен доступ к базе данных к объектам, тогда netbeans оставит менеджеры сущностей открытыми и создаст серьезные проблемы и ошибки позже, если вашему приложению потребуется использовать более одного потока.
Swing и SWT - два основных кандидата, да. На ум также приходит JavaFX, но я думаю, что он еще не готов к использованию в прайм-тайм: у него не было инструмента редактирования пользовательского интерфейса, о котором стоит говорить в течение длительного времени, единственный прототип корпоративного пользовательского интерфейса, о котором я знаю в реальной жизни, потерпел фиаско ...
Swing и SWT - это два, о которых вы можете подумать.Основные преимущества Swing:
Преимущества SWT:
Для обеих ( Платформа NetBeans и Eclipse RCP ) существуют довольно продвинутые клиентские инфраструктуры, и если вы планируете создать что-нибудь нетривиальное, я настоятельно рекомендую вам использовать одну из это: вы получаете модульные приложения, механизмы обновления, контекстно-зависимую справку, согласованные действия над меню, горячие клавиши и панели инструментов, управление окнами и множество других отличных функций бесплатно.
Я работал с Swing и предпочитаю его SWT, поскольку он имеет более чистую компонентную модель (с SWT вам нужно беспокоиться об освобождении ресурсов, поскольку вы используете собственные виджеты), действительно многоплатформенный (SWT работает в Windows, MacOS и Linux, и даже не очень хорошо оптимизирован для всех трех), и он более настраиваемый.
Вы, вероятно, не ошиблись, пытаясь SWT или даже JavaFX, но мне было бы трудно найти вескую причину для перехода на SWT, и я бы попробовал JavaFX только для проверки состояния дел, предполагая, что приложение это просто демонстрационное приложение.
Я мог бы добавить пару ссылок, но вы можете легко поискать сами и найти результаты, которые вас интересуют.
Некоторое время назад у меня была похожая задача. В итоге я остановился на Swing App Framework, потому что он не пытается быть единственным фреймворком, который будет править всеми.
В итоге я написал небольшое приложение, никаких сюрпризов не было, код получился довольно чистым (включая загрузку в ackground task), клиент доволен, я доволен.
Его цель - обеспечить (украдено из blurp)
это именно то, что мне было нужно.
Предупреждение: похоже, что жизнь этого фреймворка невелика, поскольку, по слухам, движущая сила покинула Sun/Oracle некоторое время назад.
Обновление: некоторые разработчики сделали форк Project Kenai под названием 'Better Swing Application Framework'. Так что жизнь после смерти все-таки есть
.Существуют также фреймворки GUI, написанные не на Java, которые могут служить вашим целям. Например, GTK + написан на C, но есть языковые привязки к Java. Посмотрите, например, java-gnome .
Не знаю, насколько он хорош, но быстрый поиск в Google также обнаружил привязки Java для Qt , так что, возможно, на это тоже стоит обратить внимание.
В бесплатной NetBeans IDE есть инструмент визуальной компоновки как для Swing, так и для JavaFX.