-1

Я довольно новичок в GUI, и я хотел бы понять, как правильно структурировать свою программу.Организация GUI GUI

Я ищу для создания графического интерфейса для модели MVC (все методы управления уже реализованы). Скажем, мне нужно иметь 3 отдельных окна, причем некоторые кнопки закрывают одно окно и открывают другое.

Я думал о наличии 3 классов, по одному для каждого окна. Каждое окно будет JFrame. Это разумно? Затем нам нужно добавить слушателей действий. Куда бы они шли? Я думаю, что должен быть еще один класс, с основным методом. У этого класса также могут быть все слушатели действий, так как это класс, который также создает элемент управления и способен вызывать методы управления. Это хороший способ сделать это?

Какова бы ни была ваша рекомендация, не могли бы вы представить, как это будет выглядеть с точки зрения кода? Я знаю, как собрать компоненты в одном кадре и добавить слушателя в этот фрейм, чтобы кнопка выполняла некоторые действия. Но я не уверен, как это будет выглядеть с несколькими окнами. Любой небольшой пример. Благодарю.

+0

Я думаю, что [JavaFx] (http://www.oracle.com/technetwork/java/javafx/overview/index.html) станет интересной альтернативой качелям, у вас есть выбор? – tarrsalah

+0

Нет, я ограничен качелями для этого. Но я уже немного знаком с качелями, так что все упрощается. – Zima

ответ

1

Я предлагаю вам не использовать swapping JFrames, так как это может быть очень раздражающим для пользователя - сколько приложений вы используете в настоящее время, которые бросают кучу окон последовательно на вас? Вместо этого рассмотрите возможность использования диалоговых окон разумно, где вызывается, например, когда программа должна останавливаться до тех пор, пока пользователь не будет взаимодействовать с ней определенным образом, например, при входе в систему, но в основном вы меняете просмотров (часто JPanels) с помощью CardLayout. Ваши классы GUI Swing должны быть ориентированы на создание JPanels, которые позволят обеспечить эту гибкость.

И да, основные отдельные части вашего графического интерфейса должны быть в отдельных классах.

Кроме того, я настоятельно рекомендую использовать утилиты GUI-builder для создания приложений Swing до тех пор, пока у программиста не будет достаточно хорошей справки по основам Swing.

Для простого примера свинг MVC, пожалуйста, посмотрите здесь: using-a-jfilechooser-with-swing-gui-classes-and-listeners

0

Обратите внимание, что каждый JFrame получает свой собственный вход в панель задач (я думаю). Рассмотрим JDialog, если вы хотите избежать этого и/или нуждаетесь в модальных окнах.

Один способ организовать действия, которые используются в разных местах, - создать хеш-синглтон (как его собственный класс или класс контекста) для их хранения. Используйте для этого класс Action вместо ActionListener - передайте его JButton.

Ваша программа может идти, как это:

  1. создать ShowViewFooAction и добавить в ActionHash
  2. создать ShowViewBarAction и добавить в ActionHash
  3. создать ShowViewBazAction и добавить в ActionHash
  4. создать ViewFoo
    1. создать ShowViewBarButton с ShowViewBarAction из ActionHash
    2. создать ShowViewBazAction с ShowViewBazAction из ActionHash
  5. создать Viewbar ...
  6. создать ViewBaz ...

Что касается структурирования Свинг-код в целом, ознакомьтесь с JGoodies Binding. У них есть код учебника/образца в версии 1.5.0 (это старый, но все же хороший пример).

Смежные вопросы