Иллюстрированный самоучитель по Java
Менеджер
Card Lay out
Менеджер размещения cardLayout своеобразен
— он показывает в контейнере только один, первый (first), компонент. Остальные
компоненты лежат под первым в определенном порядке как игральные карты в колоде.
Их расположение определяется порядком, в котором написаны методы add (). Следующий
компонент можно показать методом next (Container с), предыдущий — методом previous
(Container с), Последний— методом last (Container с), первый — методом first
(Container с). Аргумент этих методов — ссылка на контейнер, в который помещены
компоненты, обычно this.
В классе два конструктора:
-
СardLayout ()
— не отделяет компонент от границ контейнера;
-
CardLayout (int hgap,
int vgap)
— задает горизонтальные
hgap и вертикальные vgap поля.
Менеджер CardLayout позволяет организовать
и произвольный доступ к компонентам. Метод add () для менеджера CardLayout имеет
своеобразный вид:
add(Component
comp, Object constraints)
Здесь аргумент constraints должен
иметь тип string и содержать имя компонента. Нужный компонент с именем name
можно показать методом:
show(Container
parent, String name)
В листинге 11.5 менеджер
размещения c1 работает с панелью р, помещенной в "центр" контейнера
Frame. Панель р указывается как аргумент parent в методах next () и show ().
На "север" контейнера Frame отправлена панель р2 с меткой и раскрывающимся
списком ch. Рис. 11.5 демонстрирует результат работы программы.
Листинг 11.5.
Менеджер CardLayout
import
j ava.awt.*;
import j ava.awt.event.*;
class CardTest
extends Frame{ CardTest(String s){
super(s);
Panel p = new
Panel();
CardLayout cl
= new CardLayout();
p.setLayout(cl);
p.add(new Button("Русская
страница"),"pagel");
p.add(new Button("English
page"), "page2");
p.add(new Button("Deutsche
Seite"), "pageЗ");
add(p);
cl.next(p);
cl.show(p, "pagel");
Panel p2 = new
Panel();
p2.add(new Label("Выберите
язык:"));
Choice ch = new
Choice();
ch.add("Русский");
ch.add("Английский");
ch.add("Немецкий");'
p2.add(ch);
add(p2, BorderLayout.NORTH);
setSize(400, 300);
setvisible(true);
}
public static
void main(String[] args){
Frame f= new CardTest{"
Менеджер CardLayout");
f.addWindowListener(new
WindowAdapter(){
public void windowClosing(WindowEvent
ev){
System.exit(0);
}
});
}
}
Рис. 11.5.
Менеджер размещения
CardLayout