- •Введение в awt: работа с окнами, графикой и текстом
- •Классы awt
- •Основы оконной графики
- •Класс Component
- •Класс Container
- •Класс Panel
- •Класс Window
- •Класс Frame
- •Класс Canvas
- •Работа с фреймовыми окнами
- •Установка размеров окна
- •Скрытие и показ окна
- •Установка заголовка окна
- •Закрытие фрейм-окна
- •Создание фрейм-окна в апплете
- •Программа 97. Дочернее окно в апплете
- •Обработка событий фрейм-окна
- •Программа 98. Обработка событий мыши в окне апплета и дочернем окне
- •Создание оконной программы
- •Программа 99. Автономное оконное приложение
- •Отображение информации в окне
- •Работа с графикой
- •Рисование линий
- •Программа 100. Рисование линий в окне
- •Рисование прямоугольников
- •Программа 101. Рисование прямоугольников
- •Рисование эллипсов и кругов
- •Программа 102. Рисование эллипсов
- •Рисование дуг
- •Программа 103. Рисование дуг
- •Рисование многоугольников
- •Программа 104. Рисование многоугольников
- •Установка размеров графики
- •Программа 105. Изменение размеров рисунка
- •Работа с цветом
- •Цветовые методы
- •Использование тона, насыщенности и яркости
- •Методы getRed(), getGreen(), getBtue()
- •Метод getRgbq
- •Установка текущего цвета графики
- •Программа 106. Демонстрация цветов
- •Установка режима рисования
- •Программа 107. Режим рисования xor
- •Работа со шрифтами
- •Определение доступных шрифтов
- •Программа 108. Список шрифтов
- •Создание и выбор шрифта
- •Программа 109. Выбор шрифтов
- •Получение информации о шрифте
- •Программа 110. Свойства шрифта
- •Управление текстовым выводом с помощью класса FontMetrics
- •Отображение многострочного текста
- •Программа 111. Многострочный вывод
- •Выравнивание текста по центру
- •Программа 112. Центрирование текста
- •Выравнивание многострочного текста
- •Программа 113. Выравнивание многострочного текста
- •Исследование текста и графики
- •Задачи 13-15. Графика
Основы оконной графики
AWT определяет окна согласно иерархии классов, которая с каждым уровнем добавляет функциональные возможности и специфику. Два наиболее общих типа окон являются производными от типа Panel, который пользуется апплетами, и от типаFrame, который создает стандартное окно. Многое из функциональных возможностей этих окон получено от их родительских классов. Описание иерархии, имеющей отношение к этим двум классам, фундаментально для их понимания. Иерархия классов, связанных с классамиPanel иFrame, показана на рис. 1.
Рис. 1. Иерархия классов дляPanelиFrame
Рассмотрим каждый из этих классов.
Класс Component
Самый верхний в AWT-иерархии — класс Component. Это абстрактный класс, который инкапсулирует все атрибуты визуального компонента. Все элементы интерфейса пользователя, которые отображены на экране и взаимодействуют с пользователем, — это подклассыComponent. В классеComponent определено более сотни public-методов, которые являются ответственными за управление событиями, такими как ввод с помощью мыши и клавиатуры, позиционирование и изменение размеров окна, перерисовка и т. д. (многие из этих методов уже использовались при создании апплетов). Объект классаComponent отвечает за запоминание текущих цветов переднего плана и фона и выбранного текстового шрифта.
Класс Container
Класс Container является подклассомComponent. Он содержит дополнительные методы, которые позволяют вкладывать в него другиеComponent-объекты. Внутри классаContainer могут храниться и его собственные объекты. Это делаетContainer системой многоуровневого включения1. Контейнер отвечает за размещение (т. е. позиционирование) любых компонентов, которые он содержит. Он делает это с помощью различных менеджеров компоновки (размещения).
Класс Panel
Класс Panel — конкретный подклассContainer. Он не добавляет каких-либо новых методов. это просто реализация классаContainer. ОPanel можно мыслить как о рекурсивно вкладываемом конкретном экранном компоненте.Panel — суперкласс дляApplet. Когда экранный вывод направляется к апплету, он рисуется на поверхности объектаPanel. В сущности, объектPanel — это окно, которое не содержит области заголовка, строки меню и обрамления. Вот почему, когда апплет выполняется внутри браузера, вы не видите эти элементы. Если апплет выполняется с помощью утилиты просмотра апплетов (appletviewer), то заголовок и обрамление такого окна обеспечивается самой утилитой.
К Panel-объекту можно добавить другие компоненты с помощью методаadd() (унаследованного изContainer). Как только эти компоненты добавлены, вы можете позиционировать и изменять их размеры вручную, используя методыsetLocation(), setSize()илиsetBounds(), определенные вComponent.
Класс Window
Класс Window создает окно верхнего уровня.Окно верхнего уровня не содержится в любом другом объекте. Оно находится непосредственно на Рабочем столе. Объкты классаWindowне создаются непосредственно. Вместо этого используется подклассWindow с именемFrame.
Класс Frame
Класс Frame инкапсулирует то, что обычно представляют как "окно", то есть прямоугольную область экрана в управляемой рамке. Это подклассWindowи его окно имеет строку заголовка, строку меню, обрамление и углы, изменяющие размеры окна. Если создать в апплете объект типаFrame, то он будет содержать сообщение вида "Warning: Applet Window", говорящее о том, что окно было создано апплетом. Это сообщение предупреждает пользователей, что окно, которое они видят, было запущено апплетом, а не программным обеспечением, выполняющимся на их компьютере. (Чтобы получать пароли и другую секретную информацию, неизвестную пользователям, можно было бы использовать апплет, который способен маскироваться под хост-приложение.) Когда фрейм создается обычной программой, а не апплетом, то строится нормальное окно.