Относительное расположение и абсолютные координаты? - PullRequest
2 голосов
/ 10 декабря 2011

Я заканчиваю курсовую работу, но мне нужна помощь в понимании этого:

"Примечание. Ваше приложение должно сохранять относительное расположение кнопок и флажков. при изменении размера фрейма приложения на основе менеджеров компоновки и технических Причины, описанные в модуле. То есть Вы не должны выбирать абсолютные координаты, когда размещение JComponents на экране, но относительное расположение, то есть компонент X к справа от компонента Y и слева от компонента Z, и эти относительные местоположения должны поддерживается, если пользователь изменяет размер фрейма приложения. "

Значит ли это, что я не буду использовать BoxLayout.X/Y_AXIS? Абсолютные координаты?

Насколько я понимаю, я должен использовать несколько панелей? Если так, мой код содержит логин, и когда я войду в систему, как я буду менять цвет рамки?

Ответы [ 2 ]

4 голосов
/ 10 декабря 2011

Есть два основных способа размещения компонентов в приложении 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, достаточно подробно описаны в руководствах (см. ссылки, просмотрите сайты).Веселись!

4 голосов
/ 10 декабря 2011

Звучит так, будто вам нужно использовать менеджеры компоновки вместо абсолютного позиционирования.Да, вы в конечном итоге будете использовать несколько компонентов (вероятно, JComponent или JPanel), каждый со своим собственным менеджером макета.Вы можете создать свой пользовательский интерфейс, начав с автономных компонентов и комбинируя их вместе в другом компоненте с менеджером макета.

Начните здесь: Компоновка компонентов

Если у вас есть конкретные вопросы, такие как изменение цвета рамки, лучше задать это какотдельный вопрос (при условии, что подобный вопрос еще не существует).

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