Java Выбор макетов пользовательского интерфейса - PullRequest
4 голосов
/ 03 августа 2020

Приветствую всех, я относительно новичок как в разработке пользовательского интерфейса, так и в этом сообществе, так что успокойтесь.

Резюме: В настоящее время я пытаюсь спроектируйте GUI для собственного настольного приложения, используя Java swing. Как и большинство новичков, в настоящее время я использую Netbeans в качестве конструктора пользовательского интерфейса, чтобы упростить этот процесс, и я начал свой процесс с просмотра целой кучи руководств Youtube о том, как создать красивый пользовательский интерфейс, и я видел, как многие из них используют " AbsoluteLayout ", и я тоже это сделал.

Усилия: Я построил вполне удовлетворительный интерфейс со всеми JPanels и JFrames, используя AbsoluteLayout. Проблема в том, что мой друг "ветеран программирования", изучив пользовательский интерфейс, сказал, что использование AbsoluteLayout абсолютно неприемлемо, и беглый просмотр этого форума и руководств Oracle Java показывает похожие настроения. Я лично пытался представить свой пользовательский интерфейс, используя сочетание BorderLayout и FlowLayout, хотя я бы предпочел не брать на себя эту проблему.

Вопрос: Могу ли я использовать GroupLayout (также известный как Бесплатный дизайн думаю)? Я заметил, что новичку довольно легко использовать с помощью Netbeans (просто перетащите и отпустите с небольшими ограничениями), или у этого также есть существенный недостаток? На него каким-то образом смотрят свысока (или считают дешевым), если он используется для разработки UI вместо стандартных макетов Border, Flow, Grid?

Примечание: Стоит упомянуть что Jframe не украшен, и я не планирую давать пользователю возможность максимизировать или изменять размер окна (я знаю, что это жестоко и лениво).

Заранее спасибо!

Мой текущий Gui с AbsoluteLayout:

https://i.stack.imgur.com/3lXe2.png

My GUI attempt with a mix of Flow and Borderlayout before considering Grouplayout

https://i.stack.imgur.com/wKmAE.png

1 Ответ

1 голос
/ 03 августа 2020

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

Затем макет обычно выполняется, начиная с BorderLayout по умолчанию для JFrame и затем создавая дочернюю панель с различными менеджерами макета. Вы также можете вкладывать панели для желаемого макета.

Итак, начните с чтения учебника Swing по Диспетчеру макетов , чтобы узнать об основах каждого диспетчера макетов.

Итак, я вижу:

  1. Вы начинаете с панели JPanel, которую можно добавить в BorderLayout.LINE_START. Эта панель может использовать вертикальный BoxLayout. Затем вы можете добавить «клей» между каждой группой компонентов, чтобы задать интервал, а также «вертикальную стойку» между каждым компонентом в группе.

  2. Затем вы создаете еще одну панель «центр» который снова использует BorderLayout и добавляет эту панель в BorderLayout.CENTER. Эта панель будет иметь еще 3 дочерних панели:

  3. В «центральную» панель добавьте панель к BorderLayout.PAGE_START. Эта панель может использовать горизонтальный BoxLayout или FlowLayout.

  4. К «центральной» панели добавьте панель в BorderLayout.CENTER. Эта панель может использовать GridBagLayout.

  5. К «центральной» панели добавьте панель к BorderLayout.PAGE_END. Эта панель будет использовать GridLayout.

Да, первые несколько раз, когда вы создадите свой GUI, потребуется немного больше времени, но в конечном итоге это время потрачено не зря, поскольку вы тратите время на изучение Java / Swing, а не на изучение того, как использовать IDE. Ваш код будет поддерживаться независимо от того, какую IDE вы используете, вместо того, чтобы зависеть от данной IDE. Используйте среду IDE для отладки et c. но не позволяйте ему генерировать какой-либо зависимый от IDE код.

...