Лучший способ построить Java Swing GUI? - PullRequest
5 голосов
/ 01 марта 2010

До сих пор я использовал функцию генерации графического интерфейса Netbeans Swing для создания графического интерфейса для моих Java-приложений.

Теперь я начал использовать Eclipse для своих проектов и отбросил Netbeans. Итак, кроме написания вручную всего кода для GUI, каковы другие способы, с помощью которых я могу создавать GUI быстро и намного лучше.

Ответы [ 7 ]

4 голосов
/ 25 октября 2012

Я использую Визуальный редактор и Windows Builder плагин для Eclipse IDE с последних 2 лет. Я нашел Windows Builder отлично работает! Он предоставляет очень чистый и хорошо читаемый код для вас. Поэтому я предпочитаю использовать Windows Builder, чтобы вы могли делать все, что когда-либо было в Microsoft Visual Studio, с функциями «перетаскивание и все ».

3 голосов
/ 01 марта 2010

Вы можете продолжать кодировать его вручную, но с помощью GroovyBuilders ( link ), которые достаточно быстры, чем при использовании простого Java, но вам нужно будет встроить Groovy lib в ваше приложение ..

в противном случае существует менеджер раскладки, называемый MIG Layout , который работает довольно хорошо (гораздо более практично, чем обычное построение графического интерфейса) ..

Я также использовал инструмент под названием JVider для создания некоторых простых приложений, но при использовании визуального подхода вы всегда получаете одну и ту же неприятную вещь: поддерживая синхронизацию интерфейса и бэкэнда, учитывая также «привязки» между визуальными объектами и имя переменной ..

1 голос
/ 24 июля 2015

Вы также можете рассмотреть Качели , которые требуют встраивания Clojure .

Ваш код GUI будет выглядеть примерно так:

(defn -main [& args]
  (invoke-later
    (-> (frame :title "Hello",
               :content "Hi there",
               :on-close :exit)
        pack!
        show!)))

Где «Привет!» Автоматически «конвертируется» в JLabel, но вместо этого вы можете поместить любой компонент Swing для :content.

Это более сложный пример из моего seesaw-buttons примера проекта:

(ns seesaw-buttons.core
  (:use seesaw.core))

(defn -main [& args]
  (invoke-later
    (let [open-action (action
                    :handler (fn [e] (alert "I should open a new something."))
                    :name "Open ..."
                    :key  "menu O"
                    :tip  "Open a new something something.")
      exit-action (action
                    :handler (fn [e] (.dispose (to-frame e)))
                    :name "Exit"
                    :tip  "Close this window")]
      (-> (frame :title "Hello",
                 :content (border-panel
                            :north (toolbar :items [open-action exit-action])
                            :center "More content here..."),
                 :on-close :exit)
          pack!
          show!))))

Преимуществом Seesaw и Clojure является исключение большого количества стандартного кода, а Seesaw добавил некоторые функциональные возможности и соглашения, ускоряющие разработку.

1 голос
/ 01 марта 2010

Проект Eclipse Visual Editor, упомянутый Luhar, довольно хорош, он может использовать любой компонент стиля bean-компонентов или awt и поддерживает редактирование уже существующих классов, поскольку он основан на отражении, а не на отдельных метаданных.
Также нет никаких ограничений в том, как вы можете манипулировать сгенерированным кодом, поскольку VEP сделает все возможное, чтобы сохранить его при изменении исходного файла.
Я бы порекомендовал довольно высокую систему, если вы хотите использовать ее для более сложных компонентов, так как она довольно ресурсоемкая.
Хорошие вещи о VEP:

  • Поддерживает Swing / AWT / SWT
  • Использует исходный код и отражение, дополнительные данные не требуются
  • Может использоваться с уже существующими компонентами (см. Выше)
  • Можно редактировать код напрямую или в окне предварительного просмотра
  • Генерирует чистый код без нарушения существующего кода

Не такие приятные вещи:

  • Медленно, не забудьте приостановить функцию предварительного просмотра при непосредственном редактировании исходного кода, она будет пытаться обновляться почти постоянно.
  • Не используйте окно предварительного просмотра, если в коде есть ошибки компиляции, любые изменения, внесенные в предварительный просмотр, могут привести к неправильному редактированию в исходном коде. Перед повторным использованием вы должны устранить все ошибки компиляции.
1 голос
/ 01 марта 2010

Я столкнулся с подобной ситуацией, но обнаружил, что NetBeans на самом деле обладает отличной функциональностью 'import eclipse project'. Итак, я закончил работу по визуальному проектированию графического интерфейса в NetBeans, но использовал Eclipse для кодирования, отладки и профилирования. Netbeans добавляет некоторые файлы в ваш проект, и вы можете настроить шаблоны автоматической генерации кода в NetBeans, но это решение, которое работает для меня. Конечно, Eclipse также поставляется со своим собственным конструктором графического интерфейса, но я предпочитаю NetBeans для визуального проектирования и разработки графического интерфейса.

Импорт проектов Eclipse в NetBeans.

Проект Eclipse Visual Editor

0 голосов
/ 01 марта 2010

Другой подход заключается в использовании некоторой библиотеки XML, например SwixML . Для работы с ним требуются некоторые изменения кода, но он хорошо отделяет ваш интерфейс от кода. С другой стороны, это всего лишь обертка вокруг классов свинга. Это ИМХО как преимущество, так и недостаток. Это также довольно хорошая библиотека для быстрого создания прототипов, потому что вы можете (обычно) попробовать диалог, пока этого не будет достаточно.

0 голосов
/ 01 марта 2010

Опыт, который я получил, заключается в том, что Netbeans в значительной степени хорош для создания графических интерфейсов Swing, если вы хотите иметь возможность просто щелкнуть ваше приложение вместе. Однако, как и вы, мне нравится кодировать в Eclipse намного больше, чем в Netbeans (по личным предпочтениям Netbeans по-прежнему отличный редактор). Некоторое время я заканчивал тем, что создал свой графический интерфейс в Netbeans, а затем просто импортировал проекты в затмение.

Это работает хорошо, но, в конце концов, я думаю, вы придете к тому же выводу, что и я: лучше всего выучить менеджеры компоновки и вручную написать код GUI. Может быть, взгляните на те, которые предоставлены JGoodies , а также если те, что предоставлены Sun, просто не делают это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...