2012-04-13 4 views
41

Аналогичные вопросы задаются периодически, но многие из этих ответов устарели.Как создать «современное» настольное приложение Java?

Мне нужно создать межплатформенное настольное приложение на Java с графическим интерфейсом сопоставимого качества с современными настольными приложениями.

Swing - это выбор по умолчанию, но мне еще предстоит встретить приложение Swing, которое не выглядело, по крайней мере, довольно устаревшим и неуклюжим (субъективным, я знаю, но с GUI трудно избежать эстетических суждений) ,

Я заметил, что новый клиент Bitcoin теперь использует QT с привязками Java и имеет привлекательный пользовательский интерфейс, но это имеет тот недостаток, что он не является более чистой Java.

Значительная часть того, что я нахожу при поиске библиотек, связанных с Swing, составляет 5 лет или старше, хотя эстетика настольных приложений значительно изменилась с тех пор.

Если вам нужно было создать настольное приложение Java с нуля, что бы вы использовали для его графического интерфейса?

+0

Я не думаю, что вопрос будет выжить, но ... –

+1

Этот вопрос здесь неуместно, так как она просит обсуждения и мнения. В FAQ часто упоминаются вопросы типа обсуждения как плохо подходящие для формата Q & A SO. Если у вас есть конкретные вопросы программирования, спросите их, и мы постараемся помочь. Разговорные вопросы здесь не работают, так как они не могут быть окончательно решены. Благодарю. :) –

+27

Кен, я не согласен. Не каждый вопрос имеет черно-белый ответ, и если SO ограничено вопросами, которые имеют черно-белый ответ, тогда это будет значительно менее ценным. В целом я думаю, что люди слишком жаждут закрывать вопросы здесь, учитывая, что вред, причиненный ложным положительным (вопрос, который был закрыт, который не должен был быть), намного больше, чем вызванный ложным отрицанием (вопрос это должно было быть закрыто, но не было). – sanity

ответ

8

Посмотрите на изменение внешнего вида и ощущения вашей Java-программы. Это позволяет вам настроить общую «тему» ​​вашей программы. Here - информация об изменении LAF.

+1

Да, я знаю об этом - есть ли у вас какие-то конкретные рекомендации относительно хороших современных LAF для Swing? – sanity

+0

Я лично предпочитаю GTK LAF. Вот пара других приятных взглядов: http://dlemmermann.wordpress.com/2011/05/10/the-best-swing-look-feel-bizlaf/. – lrAndroid

9

Вы изучали JavaFX 2.0? Он разработан, чтобы легко взаимодействовать с Swing и имеет множество современных «хороших» элементов управления.

Кроме того, как отмечает lrAndroid, качели приложение может выглядеть как родное приложение, если вы установите систему выглядеть и чувствовать себя с:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
1

QT довольно обширен, но и очень большой (раздутый) и сложной. Кроме того, в SWT-библиотеке используется, например, открытый офис. SWT использует собственные виджеты пользовательского интерфейса для кнопок, таблиц и т. Д., Где Swing имитирует их.

Однако тенденция явно направлена ​​на создание богатых клиентских приложений для браузера с использованием HTML и Javascript. За последние несколько лет они достигли огромных успехов.

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

Javascript имеет мощные библиотеки с jQuery и множество плагинов. Существуют даже такие языки, как Coffeescript, которые можно использовать для создания Javascript с более простым и мощным синтаксисом.

Также нет необходимости подключать такие приложения к внешнему серверу. На клиентском компьютере могут быть установлены локальные серверы с небольшим размером (например: jetty, node.js, ...) и базы данных (SQLite, H2, ...) для создания полностью автономного приложения.

+0

Можете ли вы представить примеры современных настольных приложений с веб-интерфейсами? Я знаю, что [Freenet] (http://freenetproject.org/) делает это, но вряд ли это пример хорошего дизайна пользовательского интерфейса: -/ – sanity

31

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

Несколько примеров, показывающий, как некоторые из компонентов WebLaF выглядеть следующим образом: Some of WebLaF components

Некоторые из основных целей я таргетинг:

  1. Великих и современный вид L & F с поддержкой всех компонентов Swing,
  2. Огромный набор дополнительных компонентов, которые вы не найдете в стандартном свинге
  3. Большой набор классов полезности, которые помогут вам написать текст он код

WebLaF библиотека также предлагает несколько других преимуществ и уникальные особенности:

  1. Он является открытым исходным кодом проектом (GPLv3 лицензионным)
  2. Легких компонент для укладки с помощью системы живописцев (в частности с 9 -patch файлы)
  3. Быстрая и легкая настройка «Web» стиль по умолчанию
  4. Множество функций для ускорения и упрощения создания
  5. интерфейса приложений Swing,

Вы можете попробовать demo-app, чтобы увидеть, если это современный и достаточно :) просто

+0

ваш лучший этот ЛАЙ отлично :) –

+0

Абсолютно красивая работа Микле, вы заслуживает похвалы. – jewelsea

+0

+++ top of L & Fs, пожалуйста, чтобы игнорировать - но нужно что-то сделать с getPreferredSize (одна константа для всех L & F применяется для всех JComponents) и gap v.s. alingment для Standard LayoutManagers (уверен, кого волнует) – mKorbel

6

рамки Современные Javascript (ExtJS, Dojo, и т.д ...) предлагают те же виджеты богатство или больше (Excel как сетки для экземпляр), более широкое разнообразие L & F и обычно лучше подходит для ОС пользователя. Пользователи также очень удобны в своих браузерах и, эй, «современные вещи» находятся в Интернете, а современная сеть сегодня - HTML + Javascript.

Накладные расходы на конвертацию приложения в «веб-как» минимальны. Встроенный Jetty может оставаться очень маленьким, а дисковое пространство стало намного меньше.

Есть дополнительные преимущества, идущие вниз по этому маршруту для будущих эволюций приложения.

  • Внезапно настольное приложение становится серверным приложением, к которому можно получить доступ с другого рабочего стола. В течение нескольких недель мы смогли продвинуть настольное приложение на «портал».
  • Переписывание приложения с точки зрения (Ajax) веб-сервисов обеспечивает легкий переход к созданию полного набора служб REST (или SOAP ...). Приложение может быть затем интегрировано в другие приложения, легко отслеживаться извне и т. Д.
  • Поддержка других устройств (смартфонов, планшетов ...) становится намного проще, концентрируясь только на слое пользовательского интерфейса
  • As приложение растет, разделение проблем чище; разработчикам, работающим с пользовательским интерфейсом, не нужно связываться с кодом низкого уровня.
  • Есть много отличных дизайнеров и разработчиков JS/HTML, которые не программируются на Java.

EDIT

3 года спустя это стало очень легко благодаря Electron

+0

Как вы справляетесь с запуском веб-браузера в кросс-платформенном режиме?Можете ли вы привести примеры современных настольных приложений, используя веб-браузер для своего пользовательского интерфейса? – sanity

+2

С Java 6+ 'Desktop.getDesktop() .browse (новый URI (uriString)),' –

+1

.., который вы можете связать с 'TrayIcon'. Если ваше приложение работает в фоновом режиме, пользовательский интерфейс может быть «показан», щелкнув значок и снова выполнив вызов выше. –

2

Я знаю, этот вопрос старый, но если вы не» t хотите использовать FX и все еще хотите использовать Swing, а затем попробуйте MacWidgets, у меня есть это было на пару проектов. Он очень легкий и выглядит великолепно. Ниже представлен старый проект, над которым я работал, со временем я улучшил использование macwidgets и теперь использую его внутри своей компании.

http://www.digitalhand.net/projects/jdataanalyzer/mainGUI.png