- •Введение в 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. Графика
Класс Canvas
Хотя canvas не является частьюcontainer-иерархии, существует еще один тип окна, который может оказаться полезным. Это — классcanvas. Canvas-объект моделируетпустое окно, в котором можно рисовать.
Работа с фреймовыми окнами
Тип окна, который вы будете чаще всего создавать, является производным от Frame. Он используется для создания окон верхнего уровня и дочерних окон для апплетов и приложений. Как говорилось выше,фрейм — это окно со стандартным стилем (с заголовком, меню, обрамлением управляющими уголками).Frame поддерживает два конструктора:
Frame ()
Frame (String заголовок)
Первая форма создает стандартное окно, которое не содержит заголовка. Вторая форма создает окно с заголовком, указанным в параметре заголовок. Обратите внимание, что вы не можете определить размеры окна, поэтому следует устанавливать размеры окна уже после того, как оно было создано.
Существует несколько методов, которые можно использовать при работе с Frame-окнами. Рассмотрим их.
Установка размеров окна
Чтобы установить размеры окна, используется метод setsize(). Существует две формы этого метода (с разными списками параметров):
void setSize(int newWidth, int newHeight)
void setSize(Dimension newSize)
Новый размер окна специфицируется параметрами newWidth и newHeight (первая форма), или полямиwidth иheight объекта классаDimension, передаваемыми параметруnewsize. Размеры задаются в пикселах.
Метод getSize() используется для получения текущего размера окна. Его сигнатура:
Dimension getSize()
Данный метод возвращает текущий размер окна в полях width иheight объекта классаDimension.
Скрытие и показ окна
После создания фрейм-окно остается невидимым до тех пор, пока вы не вызовете метод setVisibie() . Сигнатура этого метода имеет вид:
void setVisible (boolean visibleFlag)
Компонент становится видимым, если параметр этого метода получает значение true, иначе он остается скрытым (невидимым).
Установка заголовка окна
Можно изменить заголовок фрейм-окна, если вызвать метод setTitie(). Он имеет следующий формат:
void setTitie(String newTitle)
где newTitle — новый заголовок окна.
Закрытие фрейм-окна
Когда фрейм-окно закрывается, программа должна удалить это окно с экрана, вызывая setVisibie() с аргументомfalse:
setVisible(false);
Чтобы перехватить событие закрытия окна, нужно реализовать метод windowClosing() интерфейсаWindowListener. ВнутриwindowClosing() необходимо удалить окно с экрана с помощью вызоваsetVisibie(false). Эту методику иллюстрирует пример, приведенный в следующем разделе.
Создание фрейм-окна в апплете
Хотя и возможно построить фрейм-окно, просто создавая Frame-объект, но вы редко будете так поступать, потому что мало что сможете с ним сделать. Например, вы не будете способны принимать или обрабатывать события, которые происходят внутри него, или выводить в него информацию. Чаще всего вы будете создавать подклассFrame. Это позволит переопределить методы классаFrame и обработку событий.
Создать новое фрейм-окно внутри апплета на самом деле очень просто. Сначала создайте подкласс Frame. Затем переопределите необходимые для работы с окном стандартные методы, такие какinit(), start(), stop() иpaint(). Наконец, реализуйте методwmdowClosing() интерфейса WindowListener, вызывая setVisible(false), чтобы закрыть окно.
Определив подкласс Frame, нужно создать объект этого класса. Однако вновь построенное фрейм-окно первоначально не будет видимым (на экране). Чтобы сделать его видимым, нужно вызватьsetVisible() с аргументомfalse. При создании окна задают высоту и ширину по умолчанию. Чтобы установить необходимый размер окна, требуется вызвать методsetSize().
Следующий апплет создает подкласс Frameс именемSampleFrame. Оконный объект этого подкласса создается внутри методаinit()классаAppletFrame.
Обратите внимание, что SampleFrame вызываетFrame-конструктор. Он создает стандартное фрейм-окно с заголовком, передаваемым конструктору в аргументеtitle. Методыstart() иstop()окна апплета переопределяются так, чтобы они показывали и скрывали дочернее окно. Это приводит к автоматическому удалению окна при завершении апплета, закрытии окна или при переходе к другой странице браузера. При возврате браузера к данному апплету показ дочернего окна возобновляется.