Метод paint
Найцікавіший для нас метод paint, який виконує малювання у вікні аплету. Ось його вихідний текст:
Якщо подивитися визначення класу Applet, яке знаходиться у файлі JavaWorkshop20\JDK\src\java\applet\Applet.java, то в ньому немає методу paint. У якому класі визначено цей метод?
Ієрархія класів
Заглянемо до документації. Виберіть з меню Help головного вікна програми Java WorkShop рядок Java API Documentation. На екрані з'явиться вікно браузера, вбудованого Java WorkShop. За допомогою цього браузера ви можете переглядати вміст довідкової системи.
У розділі Java API Packages виберіть бібліотеку класів java.applet, а потім у розділі Class Index - рядок 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
Метод paint викликається, коли потрібно перемалювати вікно аплету. Якщо вистворювали програми для операційної системи Windows, то, напевно, знайомі з повідомленням WM_PAINT, яке надходить у функцію вікна програми при необхідності його перемальовки.
Перемальовка вікна програми Windows та вікна аплету зазвичай виконується асинхронно по відношенню до роботи програми або аплету. У будь-який момент часу аплет повинен бути готовим перемалювати вміст свого вікна.
Така техніка відрізняється тим, до якої ви, можливо, звикли, створюючи звичайні програми для MS-DOS. Програми MS-DOS самі визначають, коли потрібно малювати на екрані, причому малювання може виконуватися з різних місць програми. Аплети, як і програми Windows, виконують малювання у вікнах централізовано. Аплет робить це в методі paint, а програма Windows - при обробці повідомлення WM_PAINT.
За своїм змістом, цей об'єкт нагадує контекст відображення, з яким добре знайомі творці додатків Windows. Контекст відображення - це хіба що полотно, у якому аплет може малювати зображення чи писати текст. Численні методи класу Graphics дозволяють задавати різні параметри полотна, такі, наприклад, як колір чи шрифт.
Наш додаток викликає метод drawString, який малює текстовий рядок у вікні аплету:
Ось прототип цього методу:
Через перший параметр методу drawString передається текстовий рядок як об'єкт класу String. Другий і третій параметр визначають відповідно координати точки, в якій почнеться малювання рядка.
У якій координатній системі?
Аплети використовують систему координат, яка відповідає режиму відображення MM_TEXT, знайомому тим, хто створював програми Windows. Початок цієї системи координат розташований у лівому верхньому куті вікна аплету, вісь X спрямована зліваправоруч, а вісь Y - зверху донизу (рис. 9).

Мал. 9. Система координат, що використовується методом drawString
На цьому малюнку показано, як метод drawString намалює текстовий рядок з координатами (xCoord, yCoord).