Какой LayoutManager я должен использовать для моего графического интерфейса Java? - PullRequest
2 голосов
/ 20 ноября 2011

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

В заключение: я хочу создать графический интерфейс, в котором я могу напрямую указывать координаты каждого добавленного объекта.Какой макет мне использовать?

Ответы [ 4 ]

5 голосов
/ 20 ноября 2011

Для каждой панели вы можете / должны иметь разные менеджеры компоновки, в соответствии с макетом, который вы собираетесь иметь внутри. Не существует «универсального» менеджера макета, и особенно при ручном кодировании элегантно и полезно использовать «наиболее подходящий» менеджер макета для решения задачи, которую вы решаете. Например, очень продвинутый GridBagLayout не может эмулировать WrapLayout.

Вы можете найти эту страницу полезной в качестве списка подсказок для правильного выбора менеджера компоновки.

Обратите внимание, что у каждого менеджера макета есть свои особенности в Swing, поэтому переключение с одного менеджера макета на другой может принести вам небольшие проблемы. Например, некоторые из них уважают Minimum / MaximumSize, некоторые нет и т. Д.

К вашему резюме: вы не должны пытаться устанавливать координаты "вручную". Хотя это возможно, гораздо лучше выразить связь между визуальными элементами в логической форме. Это очень поможет вам в изменении размера страницы, адресации, правильном размещении и извлечении элементов управления, а также во многих других местах, которые я сейчас не помню.

2 голосов
/ 20 ноября 2011

Взгляните на CoordinateLayout :

Позволяет размещать компоненты на основе абсолютных позиций / размеров, адаптированных на основе доступного пространства для макета.

1 голос
/ 20 ноября 2011

Определение координат (т. Е. Использование NullLayout) всегда плохая идея.Классы LayoutManager всегда должны использоваться для обработки размещения вашего компонента, поскольку он будет обрабатывать все типы событий, которые вы не должны обрабатывать (например, вычисление новых координат при изменении размера контейнера).

Я лично предпочитаюиспользовать GridBagLayout, поскольку он позволяет указывать все типы ограничений (как распределить свободное пространство, сколько места будет использовать компонент, вставки и т. д.). Этот учебник поможет вам начать работу с GridBagLayout.

Другими LayoutManager существующими, у каждого из которых есть свои сильные и слабые стороны (например, Flow Layout, MigLayout, BoxLayout),В зависимости от ваших потребностей некоторые менеджеры могут быть слишком простыми или излишними.Вы должны попытаться выучить многие из них, чтобы найти то, что вам нужно.

1 голос
/ 20 ноября 2011

Делай и то, и другое.Попробуйте WindowBuilder в Eclipse.Обеспечивает двусторонний дизайн и генерацию кода.

...