Есть два основных способа размещения компонентов в приложении JFC / Swing:
- назначить каждому контейнеру менеджер размещения, который позаботится о размещении;см. ссылку, предоставленную @ Shakedown
- , назначьте каждому JComponent абсолютную позицию для его верхнего левого угла, считая пиксели от верхнего левого угла, начиная с (0,0) контейнера верхнего уровня ( см.здесь для чего это) компоненты находятся в;см. этот урок об абсолютном позиционировании.
Как вы можете себе представить, у второго способа есть некоторые проблемы: он совсем не динамичен и его легко ошибиться, если назвать наиболее выдающиеся.Использование диспетчера макетов в большинстве случаев является не только более простым, но и более разумным способом упорядочения графического интерфейса пользователя.
В действительности менеджер компоновки назначает каждому JComponent абсолютную позицию, полученную из макета компонента.динамически выкладывается во время выполнения - обычно с использованием PreferredSize
из JComponents;например, FlowLayout
назначит каждому JComponent абсолютную позицию, которая поместит его точно подгонку справа от JComponent перед ним, при необходимости оборачивая строки.При изменении размера контейнера все компоненты в нем будут пересчитаны.Подробнее см. здесь .
По поводу вашего вопроса о BoxLayout
, это менеджер раскладки;BoxLayout.X_AXIS
и BoxLayout.Y_AXIS
используются для определения, в каком направлении должны располагаться JComponents, которыми управляет BoxLayout;они не относятся к абсолютному позиционированию.Подробности смотрите в Javadocs для BoxLayout и в руководстве по Java для BoxLayout .
В общем, ваша задача - использовать менеджер макетов;Различные менеджеры компоновки, которые доступны в стандартных библиотеках Java, достаточно подробно описаны в руководствах (см. ссылки, просмотрите сайты).Веселись!