Принципы построения графического интерфейса
Компонент и контейнер
Основное понятие графического интерфейса пользователя (ГИП) – компонент (component) графической системы. В русском языке это слово подразумевает просто составную часть, элемент чего-нибудь, но в графическом интерфейсе это понятие гораздо конкретнее. Оно означает отдельный, полностью определенный элемент, который можно использовать в графическом интерфейсе независимо от других элементов. Например, это поле ввода, кнопка, строка меню, полоса прокрутки, радиокнопка. Само окно приложения – тоже его компонент. Компоненты могут быть и невидимыми, например, панель, объединяющая компоненты, тоже является компонентом.
Вы не удивитесь, узнав, что в AWT компонентом считается объект класса Component или объект всякого класса, расширяющего класс component. В классе component собраны общие методы работы с любым компонентом графического интерфейса пользователя. Этот класс – центр библиотеки AWT.
Каждый компонент перед выводом на экран помещается в контейнер (container). Контейнер "знает", как разместить компоненты на экране. Разумеется, в языке Java контейнер – это объект класса Container или всякого его расширения. Прямой наследник этого класса – класс jcomponent – вершина иерархии многих классов библиотеки Swing.
Создав компонент – объект класса Component или его расширения, следует добавить его к предварительно созданному объекту класса container или его расширения одним из методов add ().
Класс Container сам является невидимым компонентом, он расширяет класс Component. Таким образом, в контейнер наряду с компонентами можно помещать контейнеры, в которых находятся какие-то другие компоненты, достигая тем самым большой гибкости расположения компонентов.
Основное окно приложения, активно взаимодействующее с операционной системой, необходимо построить по правилам графической системы. Оно должно перемещаться по экрану, изменять размеры, реагировать на действия мыши и клавиатуры. В окне должны быть, как минимум, следующие стандартные компоненты.
- Строка заголовка (title bar), с левой стороны которой необходимо разместить кнопку контекстного меню, а с правой – кнопки сворачивания и разворачивания окна и кнопку закрытия приложения.
- Необязательная строка меню (menu bar) с выпадающими пунктами меню.
- Горизонтальная и вертикальная полосы прокрутки (scrollbars).
- Окно должно быть окружено рамкой (border), реагирующей на действия мыши.
Окно с этими компонентами в готовом виде описано в классе Frame. Чтобы создать окно, достаточно сделать свой класс расширением класса Frame, как показано в листинге 8.1. Всего восемь строк текста и окно готово.
Листинг 8.1. Слишком простое окно приложения.
import j ava.awt.*; class TooSimpleFrame extends Frame{ public static void main(String[] args){ Frame fr = new TooSimpleFrame(); fr.setSize(400, 150); fr.setVisible(true); } }