Менеджер 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 демонстрирует результат работы программы.
Листинг 11.5. Менеджер CardLayout.
import java.awt.*; import java.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("Русская страница"),"page1"); p.add(new Button("English page"), "page2"); p.add(new Button("Deutsche Seite"), "page3"); 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