Здесь аргумент constraints должен иметь тип String и содержать имя компонента. Нужный компонент с именем name можно показать методом
show(Container parent, String name);
В листинге 14.5 менеджер размещения cl работает с панелью p, помещенной в "центр" контейнера JFrame. Панель p указывается как аргумент parent в методах next() и show(). На "север" контейнера JFrame отправлена панель p2 с меткой и раскрывающимся списком ch. Рисунок 14.5 демонстрирует результат работы программы.
Листинг 14.5. Менеджер CardLayout
import java.awt.*; import javax.swing.*;
class CardTest extends JFrame{ CardTest(String s){ super(s);
JPanel p = new JPanel();
CardLayout cl = new CardLayout(); p.setLayout(cl);
p.add(new JButton("Русская страница"),"page1"); p.add(new JButton("English page"), "page2"); p.add(new JButton("Deutsche Seite"), "page3"); add(p); cl.next(p); cl.show(p, "page1");
JPanel p2 = new JPanel(); p2.add(new JLabel("Выберите язык:"));
JComboBox ch = new JComboBox(); ch.addItem("Русский"); ch.addItem("Английский"); ch.addItem("Немецкий");
p2.add(ch);
add(p2, BorderLayout.NORTH);
setSize(400, 300); setVisible(true);
}
public static void main(String[] args){
JFrame f= new CardTest(" Менеджер CardLayout"); f.setDefaultCloseOperation(EXIT ON CLOSE);
}
}
Рис. 14.5. Менеджер размещения CardLayout |
Менеджер
Менеджер размещения GridBagLayout расставляет компоненты наиболее гибко, позволяя задавать размеры и положение каждого компонента.
В классе GridBagLayout есть только один конструктор, конструктор по умолчанию, без аргументов. Менеджер класса GridBagLayout, в отличие от других менеджеров размещения, не содержит правил размещения. Он играет только организующую роль. Ему передаются ссылка на компонент и правила расположения этого компонента, а сам он помещает данный компонент по указанным правилам в контейнер. Все правила размещения компонентов задаются в объекте другого класса, GridBagConstraints.
Менеджер размещает компоненты в таблице с неопределенным заранее числом строк и столбцов. Один компонент может занимать несколько ячеек этой таблицы, заполнять ячейку целиком, располагаться в ее центре, углу или прижиматься к краю ячейки.
Класс GridBagConstraints содержит одиннадцать полей, определяющих размеры компонентов, их положение в контейнере и взаимное положение, и несколько констант — значений некоторых полей. Они перечислены в табл. 14.1. Эти данные определяются конструктором, имеющим одиннадцать параметров по числу полей. Второй конструктор — конструктор по умолчанию — присваивает параметрам значения, заданные по умолчанию.
Поле | Значение |
anchor | Направление размещения компонента в контейнере. Константы: абсолютные —CENTER, NORTH, EAST, NORTHEAST, SOUTHEAST, SOUTH, SOUTHWEST, WEST, NORTHWEST; относительные — PAGE START, PAGE END, LINE START, LINE END, FIRST LINE START,FIRST LINE END, LAST LINE START, LAST LINE END, относительно базовой линии — BASELINE, BASELINE_LEADING, BASELINE_TRAILING, ABOVE_BASELINE, ABOVE_BASELINE_LEADING, ABOVE_BASELINE_TRAILING, BELOW_BASELINE,BELOW BASELINE LEADING, BELOW BASELINE TRAILING; по умолчанию — CENTER |
fill | Растяжение компонента для заполнения ячейки. Константы: none, horizontal, vertical, both; по умолчанию — NONE |
gridheight | Количество ячеек в колонке, занимаемых компонентом. Целое типа int, по умолчанию 1. Константа remainder означает, что компонент займет остаток колонки, relative — будет следующим по порядку в колонке |