Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин Страница 24
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин читать онлайн бесплатно
В конструкторе менеджера можно указать горизонтальные и вертикальные промежутки между областями, задаваемые в пикселах.
Если в контейнер помещается менее пяти компонентов, то некоторые области не используются и не занимают места в контейнере.
Если не занята область CENTER, тогда компоненты прижимаются к границам контейнера.
Так как менеджер компоновки BorderLayout размещает не больше пяти компонентов, можно использовать в качестве компонентов панели, в которые дополнительно размещать компоненты.
GridLayout
Менеджер компоновки GridLayout размещает компоненты в таблицу с заданным в конструкторе числом строк и столбцов.
Все компоненты получают одинаковый размер.
В конструкторе также можно задать промежутки между компонентами в пикселах по горизонтали и вертикали.
Конструктор по умолчанию менеджера задает таблицу размером 0 на 0 без промежутков между компонентами. Компоненты будут располагаться в одной строке.
Компоненты размещаются менеджером GridLayout слева направо по строкам созданной таблицы в том порядке, в котором они заданы в методах add контейнера.
Нулевое количество строк или столбцов означает, что менеджер сам создаст нужное их число.
CardLayout
Менеджер компоновки CardLayout показывает в контейнере стек компонентов, отображая только один, первый компонент.
Остальные компоненты лежат под первым в определенном порядке.
Их расположение определяется порядком добавления в контейнер с помощью метода add.
Следующий компонент можно показать методом next менеджера, предыдущий – методом previous, последний – методом last, первый – методом first.
Аргумент этих методов – ссылка на контейнер, в который помещены компоненты.
В конструкторе менеджера можно указать горизонтальные и вертикальные отступы от границ контейнера.
Менеджер CardLayout позволяет организовать и произвольный доступ к компонентам.
Метод add тогда имеет в качестве аргумента имя компонента.
Нужный компонент с именем можно показать методом show, в котором указывается имя нужного компонента и контейнер.
Тут нужно учесть, что для фрейма мы добавляем компоненты не в сам фрейм, а в панель содержимого contentPane.
GridBagLayout
Менеджер компоновки GridBagLayout позволяет размещать компоненты наиболее гибко, задавая размеры и положение каждого компонента.
В классе GridBagLayout есть только один конструктор, конструктор по умолчанию, без аргументов.
Менеджер GridBagLayout, в отличие от других менеджеров компоновки, не содержит правил размещения. Он играет только организующую роль.
Все правила размещения компонентов задаются в объекте другого класса, GridBagConstraints, который указывается в методе add добавления компонента в контейнер.
Менеджер размещает компоненты в таблице с неопределенным заранее числом строк и столбцов.
Один компонент может занимать несколько ячеек этой таблицы, заполнять ячейку целиком, располагаться в ее центре, углу или прижиматься к краю ячейки.
Класс GridBagConstraints содержит одиннадцать полей, определяющих размеры компонентов, их положение в контейнере и взаимное положение, и несколько констант – значений полей.
Как правило, объект класса GridBagConstraints создается конструктором по умолчанию, затем значения нужных полей определяются простым присваиванием новых значений.
Здесь поле gridx указывает номер строки, поле gridy указывает номер столбца, поле gridwidth указывает количество занимаемых ячеек в строке, поле ipady указывает сколько добавляется к минимальной высоте компонента, поле fill используется, когда область отображения компонента больше, чем размер компонента.
GroupLayout
Менеджер компоновки GroupLayout работает с горизонтальной и вертикальной компоновкой отдельно.
Это означает, что каждый компонент должен быть определен дважды в горизонтальной и вертикальной компоновке.
Если вы забудете это сделать, GroupLayout выбросит исключение.
Менеджер GroupLayout использует два типа размещения компонентов: последовательное и параллельное расположение.
При последовательном размещении компоненты просто размещаются один за другим по одной оси.
Позиция каждого компонента определяется относительно предыдущего компонента.
Второй способ размещает компоненты параллельно – поверх друг друга в одном и том же месте.
Компоненты могут быть выровнены по базовой линии, по верху или низу по вертикали.
По горизонтали они могут быть выровнены влево, вправо или по центру, если компоненты не имеют одинакового размера.
Обычно компоненты, размещенные параллельно по одной оси, размещаются последовательно по другой оси, так что они не перекрываются.
Таким образом эти размещения могут быть вложенными, создавая иерархию.
Расстояние между компонентами или отступы можно рассматривать как невидимую составляющую определенного размера.
Отступы произвольного размера могут быть добавлены к группам компонентов, как отдельные компоненты, с помощью методов для групп GroupLayout.ParallelGroup и GroupLayout.SequentialGroup.
Используя отступы, вы можете точно контролировать расстояние между компонентами или от границы контейнера.
Метод setAutoCreateGaps устанавливает, должен ли автоматически создаваться промежуток между компонентами при последовательном размещении.
Метод setAutoCreateContainerGaps устанавливает, должен ли автоматически создаваться промежуток между контейнером и компонентами, которые касаются границы контейнера, при параллельном размещении.
Метод setHorizontalGroup создает горизонтальную группу компонентов, а метод setVerticalGroup создает вертикальную группу компонентов, при этом мы определяем, какая это будет группа – с последовательным размещением компонентов или параллельным размещением.
Для определения типа группы используются методы createSequentialGroup и createParallelGroup.
Метод addComponent добавляет компонент в группу, а метод addGroup добавляет группу.
В этом примере мы создаем горизонтальную группу с последовательным размещением, в которую добавляем кнопку и группу.
По горизонтальной оси кнопки 2 и 3 занимают одно и тоже место, поэтому эта группа будет параллельной.
И в нее мы добавляем кнопки 2 и 3.
Теперь по вертикальной оси у нас все кнопки расположены последовательно, поэтому для вертикальной группы мы создаем последовательную группу, в которую добавляем все три кнопки.
Таким образом видно, что при работе с менеджером GroupLayout нужно сначала создать визуальный макет, а затем на его основе создавать группы.
BoxLayout и Box
Менеджер компоновки BoxLayout используется для размещения компонентов по вертикали или по горизонтали.
Менеджер компоновки BoxLayout создается с помощью конструктора, первым параметром которого указывается контейнер.
Второй параметр задает способ расположения компонентов в этом контейнере с помощью одной из констант X_AXIS – расположение слева направо, Y_AXIS – расположение сверху вниз, LINE_AXIS и PAGE_AXIS – расположение определяется контейнером.
Если задано горизонтальное расположение компонентов, тогда менеджер пытается сделать высоту всех компонентов одинаковой, равной высоте самого высокого компонента.
При вертикальном расположении менеджер старается выровнять ширину компонентов по самому широкому компоненту.
Панель Box – это контейнер, который использует менеджер компоновки BoxLayout.
Вы можете легко создавать сложные компоновки компонентов, помещая их в несколько вложенных ящиков Box.
Панель Box создается с помощью статического метода createHorizontalBox для горизонтального размещения компонентов или статического метода createVerticalBox для вертикального размещения компонентов.
Класс Box также предоставляет статические методы, которые создают невидимые компоненты, которые можно использовать для улучшения компоновки.
Их можно даже использовать в контейнерах, которые не являются панелями Box, например, в панели JPanel.
Вы можете отдельно управлять выравниванием каждого компонента, вызывая следующие методы setAlignmentX, выравнивание о оси х от центра контейнера, и setAlignmentY, выравнивание по оси y, которые компонент наследует от класса Component.
strut- это невидимый компонент, который имеет фиксированный размер в пикселях.
Создается strut с помощью статических методов createHorizontalStrut и createVerticalStrut,
Жалоба
Напишите нам, и мы в срочном порядке примем меры.