logo
Хабибуллин

Класс Container

Каждый компонент перед выводом на экран помещается в контейнер — подкласс клас-

са Container.

Класс Container — прямой подкласс класса Component, и наследует все его методы. Кроме них основу класса составляют методы добавления компонентов в контейнер:

add(Component comp) — компонент comp добавляется в конец контейнера;

add(Component comp, int index) — компонент comp добавляется в позицию index

в контейнере, если index == -1, то компонент добавляется в конец контейнера;

add(Component comp, Object constraints) — менеджеру размещения контейнера даются

указания объектом constraints;

add(String name, Component comp) — компонент получает имя name.

Два метода удаляют компоненты из контейнера:

remove(Component comp) — удаляет компонент с именем comp;

remove(int index) — удаляет компонент с индексом index в контейнере.

Один из компонентов в контейнере получает фокус ввода (input focus), на него направляется ввод с клавиатуры. Фокус можно переносить с одного компонента на другой и обратно клавишами <Tab> и <Shift>+<Tab>. Компонент способен запросить фокус методом requestFocus() и передать фокус следующему компоненту методом transferFocus(). Компонент может проверить, имеет ли он фокус, своим логическим методом hasFocus(). Это методы класса Component.

Для облегчения размещения компонентов в контейнере определяется менеджер размещения (layout manager) — объект, реализующий интерфейс LayoutManager или его подынтерфейс LayoutManager2. Каждый менеджер размещает компоненты в каком-то своем порядке: один менеджер расставляет компоненты в таблицу, другой норовит растащить компоненты по сторонам, третий просто располагает их один за другим, как слова в тексте. Менеджер определяет смысл слов "добавить в конец контейнера" и "добавить в позицию index".

В контейнере в любой момент времени может быть установлен только один менеджер размещения. В каждом контейнере есть свой менеджер по умолчанию, установка другого менеджера производится методом

setLayout(LayoutManager manager);

Менеджеры размещения мы рассмотрим подробно в следующей главе. В данной главе будем размещать компоненты вручную, отключив менеджер по умолчанию методом

setLayout(null).