Менеджер 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