Базовый дизайн Java GUI - PullRequest
       4

Базовый дизайн Java GUI

6 голосов
/ 29 декабря 2011

В книге GUI, которую мы используем в классе, есть много примеров того, как графические пользовательские интерфейсы сделаны в Java.Так много примеров, что я очень озадачен тем, какой из них следует использовать, когда речь идет о большом приложении.

Итак, я видел примеры

  • , в которых основноекласс расширяется JFrame
  • , где объект JFrame создается внутри main метода
  • , где основной класс расширяется JFrame И реализует ActionEvent интерфейс
  • где классы Listener объявлены внутри основного класса

Конечно, я могу работать со всеми из них, но сейчас, поскольку у меня нет никакого опыта, я не вижуПреимущество использования любого из них.На самом деле один из них - правильный способ сделать это, или это зависит от моей ситуации?

Спасибо!

Ответы [ 4 ]

6 голосов
/ 29 декабря 2011

«Есть» или «Имеет»?Это вопрос, который следует задать при рассмотрении вопроса о расширении класса.Если новый класс «является A» фреймом, расширяйте фрейм, но если классу просто нужна ссылка на фрейм, не расширяет .

Фактически, если пользовательский компонент требуется , расширьте JComponent или JPanel, затем добавьте это к фрейму, ..applet, окну, JInternalFrame, диалогу, ограничению макета, частиразделенная панель ..

Слушатели

Что касается слушателей.Вместо того, чтобы обходить огромную структуру if / else в единственном методе actionPerformed() для определения требуемого действия, более оптимальным является:

  1. Создать прослушиватель для каждого элемента управления, который нуждаетсяit.
  2. Создайте экземпляр AbstractAction, который может использоваться для нескольких элементов управления (кнопка «Копировать», пункт меню и т. д.).

Сводка

Так (в общем случае) для:

  1. JFrame, не расширяйте.
  2. Слушатели, создавайте и добавляйте по мере необходимости.
2 голосов
/ 29 декабря 2011

Честно говоря, это зависит от ситуации. Одно основное правило при кодировании - «кодировать абстрактные классы или интерфейсы».

Итак, в двух словах, класс, расширяющий (или реализующий) JFrame (или любой другой интерфейс или класс), и / или класс, выполняющий то же самое с ActionListener.

Все дело в удобстве обслуживания, гибкости и чистоте вашего кода.

0 голосов
/ 29 декабря 2011

, в котором основной класс расширяет JFrame

  • основной вызов не должен расширять JFrame. если это не так, вы должны создать объект JFrame, как вы делаете это с любым другим классом

где объект JFrame создается внутри метода main

  • Если MainClass расширяет JFrame, он создается внутри c'tor (в super ()).
0 голосов
/ 29 декабря 2011

Стандартный подход: используйте EventQueue в методе main, который создает основную форму. В этом случае все ваши операции будут асинхронными

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