Академический Документы
Профессиональный Документы
Культура Документы
Одобрено
редакционно-издательским советом
Балаковского инженерно-
технологического института
Балаково 2015
Введение
Цель работы: изучение возможностей создания графических изобра-
жений при помощи метода paint(), который выполняет рисование в окне
апплета.
Основные понятия
Метод paint выполняет рисование в окне апплета. Вот его исходный
текст:
public void paint(Graphics g)
{
g.drawString("Hello, Java world!", 20, 20);
}
Если посмотреть определение класса Applet, которое находится в
файле Java-Workshop20\JDK\src\java\applet\Applet.java, то в нем нет метода
paint. В каком же классе определен этот метод?
Заглянем в документацию. Выберите из меню Help главного окна
приложения Java WorkShop строку Java API Documentation. На экране по-
явится окно браузера, встроенного в Java WorkShop. С помощью этого
браузера вы сможете просматривать содержимое справочной системы.
В разделе Java API Packages выберите библиотеку классов
java.applet, а затем в разделе Class Index - строку Applet. Вы увидите
иерархию классов:
java.lang.Object
|
+---java.awt.Component
|
+---java.awt.Container
|
+---java.awt.Panel
2
|
+---java.applet.Applet
Из этой иерархии видно, что класс java.applet.Applet произошел от
класса java.awt.Panel. Этот класс, в свою очередь, определен в библиотеке
классов java.awt и произошел от класса java.awt.Container.
Продолжим наши исследования. В классе java.awt.Container снова
нет метода paint, но сам этот класс создан на базе класса
java.awt.Component.
Но и здесь метода paint нет. Этот метод определен в классе
java.awt.Component, который, в свою очередь, произошел от класса
java.lang.Object и реализует интерфейс java.awt.image.ImageObserver.
Таким образом, мы проследили иерархию классов от класса
java.applet.Applet, на базе которого создан наш апплет, до класса
java.lang.Object, который является базовым для всех классов в Java.
Метод paint определен в классе java.awt.Component, но так как этот
класс является базовым для класса Applet и для нашего класса HelloApplet,
мы можем переопределить метод paint.
Метод paint вызывается, когда необходимо перерисовать окно аппле-
та. Если вы создавали приложения для операционной системы Windows, то
наверняка знакомы с сообщением WM_PAINT, которое поступает в функ-
цию окна приложения при необходимости его перерисовки.
Перерисовка окна приложения Windows и окна апплета обычно вы-
полняется асинхронно по отношению к работе приложения или апплета. В
любой момент времени апплет должен быть готов перерисовать содержи-
мое своего окна.
Такая техника отличается о той, к которой вы, возможно, привыкли,
создавая обычные программы для MS-DOS. Программы MS-DOS сами
определяют, когда им нужно рисовать на экране, причем рисование может
выполняться из разных мест программы. Апплеты, так же как и приложе-
3
ния Windows, выполняют рисование в своих окнах централизованно. Ап-
плет делает это в методе paint, а приложение Windows - при обработке со-
общения WM_PAINT.
Обратите внимание, что методу paint в качестве параметра передает-
ся ссылка на объект Graphics:
public void paint(Graphics g)
{
. . .
}
По своему смыслу этот объект напоминает контекст отображения, с
которым хорошо знакомы создатели приложений Windows. Контекст
отображения - это как бы холст, на котором апплет может рисовать изоб-
ражение или писать текст. Многочисленные методы класса Graphics поз-
воляют задавать различные параметры холста, такие, например, как цвет
или шрифт.
Наше приложение вызывает метод drawString, который рисует тек-
стовую строку в окне апплета:
g.drawString("Hello, Java world!", 20, 20);
Вот прототип этого метода:
public abstract void drawString(String str, int
x, int y);
Через первый параметр методу drawString передается текстовая
строка в виде объекта класса String. Второй и третий параметр определяют,
соответственно, координаты точки, в которой начнется рисование строки.
Апплеты используют систему координат, которая соответствует ре-
жиму отображения MM_TEXT, знакомому тем, кто создавал приложения
Windows. Начало этой системы координат расположено в левом верхнем
углу окна апплета, ось X направлена слева направо, а ось Y - сверху вниз
(рис. 1).
4
Рис. 1. Система координат, используемая методом drawString.
На этом же рисунке показано, как метод drawString нарисует тексто-
вую строку с координатами (xCoord, yCoord).
Пример выполнения
5
Рисунок 2 - Созданное оконное приложение при помощи jFrame
2. Создать новый класс и сделать его наследником класса Panel.
6
Рисунок 4 - Созданные поля, отвечающие за размеры геометриче-
ских фигур
4. Произвести инкапсуляцию полей.
7
Рисунок 6 - Реорганизация кода
5. Переопределить метод paint() в соответствии с индивидуальным
заданием.
8
6. Добавить контейнер с собственной панелью на фреймовое окно.
9
Рисунок 10 - Сгенерированный код блока прослушивания события
нажатия на клавиатуру
9. Реализовать движение геометрических фигур при нажатии на кла-
виатуру. Ограничить движение геометрических фигур фреймовым окном.
10
Рис. 12. Индивидуальные задания.
11
9. Опишите работу с блоком прослушивания события нажатия на
клавиатуру.
10. Для каких целей используется метод repaint?
12