Менеджер CardLayout

 

Менеджер размещения 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. Менеджер 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); 

}

}); 

}