Класс 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 в контейнере.
Один из компонентов в контейнере получает
Для облегчения размещения компонентов в контейнере определяется
подынтерфейс LayoutManager2. Каждый менеджер размещает компоненты в каком-то своем порядке: один менеджер расставляет компоненты в таблицу, другой норовит растащить компоненты по сторонам, третий просто располагает их один за другим, как слова в тексте. Менеджер определяет смысл слов "добавить в конец контейнера" и "добавить в позицию index".
В контейнере в любой момент времени может быть установлен только один менеджер размещения. В каждом контейнере есть свой менеджер по умолчанию, установка другого менеджера производится методом
setLayout(LayoutManager manager);
Менеджеры размещения мы рассмотрим подробно в следующей главе. В данной главе будем размещать компоненты вручную, отключив менеджер по умолчанию методом
setLayout(null).
Кроме событий класса Component — ComponentEvent, FocusEvent, KeyEvent, MouseEvent — при добавлении и удалении компонентов в контейнере происходит событие ContainerEvent.
Текстовая метка
Перейдем к рассмотрению конкретных компонентов. Самый простой компонент описывает класс Label.
Компонент Label — это строка текста, оформленная как графический компонент для размещения в контейнере. Текст можно поменять только методом доступа setText (String text), но не вводом пользователя с клавиатуры или с помощью мыши.
Создается объект этого класса одним из трех конструкторов:
□ Label () — пустой объект без текста;
□ Label (String text) — объект с текстом text, который прижимается к левому краю компонента;
□ Label (String text, int alignment) — объект с текстом text и определенным размещением в компоненте текста, задаваемого одной из трех констант: center, left, right.
Размещение можно изменить методом доступа setAlignment(int alignment).
Остальные методы, кроме методов, унаследованных от класса Component, позволяют получить текст getText () и размещение getAlignment (), а также установить текст методами
setText(String) и размещение setAlignment(int).
В классе Label происходят события класса Component: ComponentEvent, FocusEvent, KeyEvent, MouseEvent.
Кнопка
Немногим сложнее класс Button.
Компонент Button — это кнопка стандартного для данной графической системы вида с надписью, умеющая реагировать на щелчок кнопки мыши — при нажатии она "вдавливается" в плоскость контейнера, при отпускании — становится "выпуклой".
Два конструктора, Button ( ) и Button (String label), создают кнопку без надписи и с надписью label соответственно.
Методы доступа getLabel() и setLabel(String label) позволяют получить и изменить надпись на кнопке.
Главная функция кнопки — реагировать на щелчки мыши, и прочие методы класса обрабатывают эти действия. Мы рассмотрим их в
Кроме событий класса Component — ComponentEvent, FocusEvent, KeyEvent, MouseEvent — при воздействии на кнопку происходит событие ActionEvent.
Кнопка выбора
Немного сложнее класса Button класс Checkbox, создающий кнопки выбора.