Перед використанням керуючих компонентів (наприклад, кнопок) їх треба розташувати на формі в потрібному порядку. Замість ручного розташування застосовуються менеджери розміщення, що визначають спосіб, який панель використовує для завдання порядку розміщення керуючого елемента на формі. Менеджери розміщення контролюють, як виконується позиціонування компонентів, що додаються в вікна, а також їх впорядкування. Якщо користувач змінює розмір вікна, менеджер розміщення переупорядочівать компоненти в новій області так, щоб вони залишалися видимими і в той же час зберегли свої позиції відносно один одного.
Менеджер розміщення являє собою один з класів FlowLayout. BorderLayout. GridLayout. CardLayout. BoxLayout. реалізують інтерфейс LayoutManager. встановлює розміщення.
Клас FlowLayout - менеджер потокової компонування. При цьому компо-ненти розміщуються від лівого верхнього кута вікна, зліва направо і зверху вниз, як і звичайний текст. Цей менеджер використовується за умовчанням при додаванні компонентів в аплети. При використанні бібліотеки AWT менеджер FlowLayout є клас, оголошений наступним чином:
public class FlowLayout extends Object
implements LayoutManager, Serializable<>
У наступному прикладі демонструються можливості потокової компонування різних елементів управління.
/ * Приклад # 1. потокова компоновка по центру: FlowLayoutEx.java * /
publicclass FlowLayoutEx extends JApplet
private Component c [] = new Component [9];
// установка менеджера розміщень
setForeground (Color.getHSBColor (1f, 1f, 1f));
for (int i = 0; i
c [i + 3] = new JLabel (msg [i]);
c [i + 6] = new JTextField (txt [i]);
Перевантажується метод add (Component ob). визначений у класі java.awt.Container (підкласі Component), додає компоненти JButton. JLabel. JTextField до вікна і промальовує їх всякий раз, коли вікно відображається на екран.
Метод setLayout (LayoutManager mgr) встановлює менеджер розміщення для даного контейнера. Результати роботи аплету наведені на малюнку.
Мал. 13.1. Розміщення компонентів FlowLayout
Менеджер GridLayout розділяє форму на задану кількість рядів і колонок. На відміну від нього компоновка BoxLayout розміщує кілька компонентів по вертикалі або горизонталі. На спосіб розташування компонентів зміна розмірів форми не впливає.
/ * Приклад # 2. компоновка в табличному вигляді: GridLayoutEx.java * /
publicclass GridLayoutEx extends JApplet
private Component b [] = new Component [7];
for (int i = 0; i add ((b [i] = new JButton ( "(" + i + ")"))); Мал. 13.2. Розміщення компонентів GridLayout Менеджер BorderLayout дозволяє позиціонувати елементи і групи з них в областях фіксованого розміру, що межують зі сторонами фрейму, які позначаються параметрами сторонами світла: NORTH. SOUTH. EAST. WEST. Інший простір позначається як CENTER. / * Приклад # 3. фіксована компоновка по областям: import javax.swing.JToggleButton; // «западає» кнопка publicclass BorderGridLayoutDemo extends JFrame
Container c = getContentPane (); c.add (new JToggleButton ( "- 1"), BorderLayout.WEST); c.add (new JToggleButton ( "- 2"), BorderLayout.SOUTH); c.add (new JToggleButton ( "- 3"), BorderLayout.EAST); JPanel jPanel = new JPanel (); jPanel.setLayout (new GridLayout (2, 4)); jPanel.add (new JButton ( "" + i)); publicstaticvoid main (String [] args)
fr.setTitle ( "Border Grid Layouts Example ");
Мал. 13.3. Розміщення компонентів BorderLayout і GridLayout
Компонування BoxLayout дозволяє групувати елементи в підгалузях фрейма в рядки і стовпці. Можливості класу Box дозволяють розміщувати компоненти в рамці, орієнтованої горизонтально або вертикально.
/ * Приклад # 4. компоновка в групах з орієнтацією: BoxLayoutDemo.java * /