ГЛАВА 10
Основные компоненты AWT
Казалось, что компоненты AWT постепенно выходят из употребления. Они не могут удовлетворить возрастающие потребности программистов и пользователей и заменяются компонентами Swing, SWAT, SWT и других графических библиотек. Тем не менее апплеты и некоторые приложения еще часто приходится создавать на основе компонентов AWT, а они используются в сотовых телефонах и других мобильных устройствах.
Графическая библиотека AWT предлагает более двадцати готовых компонентов. Они показаны на рис. 8.2. Наиболее часто используются подклассы класса Component — классы Button, Canvas, Checkbox, Choice, Container, Label, List, Scrollbar, TextArea, TextField, Panel, ScrollPane, Window, Dialog, FileDialog, Frame.
Еще одна группа компонентов- это компоненты меню - классы MenuItem, MenuBar,
Menu, PopupMenu, CheckboxMenuItem.
Забегая вперед, мы для каждого компонента перечислим события, которые в нем происходят. Обработку событий разберем в
Начнем изучать эти компоненты от простых компонентов к сложным и от наиболее часто используемых к применяемым реже. Но сначала посмотрим на то общее, что есть во всех этих компонентах, на сам класс Component.
Класс
Класс Component — центр библиотеки AWT — очень велик и обладает большими возможностями. В нем пять статических констант, определяющих размещение компонента внутри пространства, выделенного для компонента в содержащем его контейнере:
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT, и около сотни методов.
Большинство методов — это методы доступа getXXX(), is^XX(), set^XX(). Изучать их нет смысла, надо просто посмотреть, как они используются в подклассах.
Конструктор класса недоступен — он защищенный (protected), потому что класс Component абстрактный, он не может использоваться сам по себе, применяются только его подклассы.
Компонент всегда занимает прямоугольную область со сторонами, параллельными сторонам экрана, и в каждый момент времени имеет определенные размеры, измеряемые в пикселах. Размеры компонента можно узнать методом getSize (), возвращающим объект класса Dimension, или целочисленными методами getHeight ( ) и getWidth(), возвращающими высоту и ширину прямоугольника. Новый размер компонента можно установить из программы методами setSize(Dimension d) или setSize(int width, int height), если это допускает менеджер размещения контейнера, содержащего компонент.
У компонента есть предпочтительный размер, при котором компонент выглядит наиболее пропорционально. Его можно получить методом getPreferredSize() в виде объекта
Dimension, а установить — методом setPreferredSize(Dimension) .
Компонент обладает минимальным и максимальным размерами. Их возвращают методы
getMinimumSize ( ) и getMaximumSize() в виде объекта Dimension. Установить эти размеры можно методами setMinimumSize (Dimension) и setMaximumSize (Dimension).
В компоненте есть система координат. Ее начало — точка с координатами (0, 0) — находится в левом верхнем углу компонента, ось
В компоненте хранятся координаты его левого верхнего угла в системе координат объемлющего контейнера. Их можно узнать методами getLocation(), а изменить — методами setLocation (), переместив компонент в контейнере, если это позволит менеджер размещения компонентов.
Можно выяснить сразу и положение, и размер прямоугольной области компонента методом getBounds (), возвращающим объект класса Rectangle, и изменить разом и положение, и размер компонента методами setBounds(), если это позволит сделать менеджер размещения.
Компонент может быть недоступен для действий пользователя, тогда он выделяется на экране обычно светло-серым цветом. Доступность компонента можно проверить логическим методом isEnabled (), а изменить — методом setEnabled (boolean enable).
Для многих компонентов определяется графический контекст — объект класса Graphics, — который управляется методом paint (), описанным в предыдущей главе, и который можно получить методом getGraphics ( ).
В контексте есть текущий цвет и цвет фона — объекты класса Color. Цвет фона можно получить методом getBackground(), а изменить — методом setBackground(Color color). Текущий цвет можно получить методом getForeground(), а изменить- методом
setForeground(Color color) .
В контексте есть шрифт — объект класса Font, возвращаемый методом getFont() и изменяемый методом setFont ( Font font).
В компоненте определяется локаль — объект класса Locale. Его можно получить методом getLocale ( ), изменить-методом setLocale (Locale locale ).
В компоненте существует курсор, показывающий положение мыши, — объект класса Cursor. Его можно получить методом getCursor (). Изменяется форма курсора в "тяжелых" компонентах с помощью метода setCursor(Cursor cursor).
Положение курсора мыши над компонентом можно отследить методом getMousePosition ( ), возвращающим координаты курсора в виде объекта класса Point.