События. Класс Container.
Событие ComponentEvent происходит при перемещении компонента, изменении его размера, удалении с экрана и появлении на экране.
Событие FocusEvent возникает при получении или потере фокуса.
Событие KeyEvent проявляется при каждом нажатии и отпускании клавиши, если компонент имеет фокус ввода.
Событие MouseEvent происходит при манипуляциях мыши на компоненте.
Каждый компонент перед выводом на экран помещается в контейнер – подкласс класса 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).