Новые книги

E-mail маркетинг успешно помогает интернет-магазинам извлекать прибыль из наработанной клиентской базы. И если вы не хотите оплачивать услуги профессиональных агентств, а намерены развивать e-mail маркетинг своими силами, эта книга для вас. Она содержит четкую модель для малых и средних интернет-магазинов с учетом их реалий: неготовности вкладывать большие средства на старте, нехватки ресурсов, отсутствия качественного контента, а также необходимости получать немедленную, ясно прослеживаемую финансовую отдачу от инструмента.

Читайте, внедряйте и умножайте прибыль!
Эта книга – самый полный и, по словам экспертов, «самый полезный» самоучитель по ремонту, модернизации и сборке компьютера своими силами.

Вы найдете здесь подробную информацию о программах, комплектующих, устройствах самого последнего поколения.

Вы научитесь сами составлять компьютер из оптимальных для вас комплектующих; самостоятельно правильно ставить и удалять любые программы; «разгонять» свой ПК; менять отжившие блоки и детали на новые; диагностировать и устранять неполадки и сбои и многое, многое другое. Освоив материал этой книги, вы сможете добиться от своей машины максимума производительности при минимуме вложений.

Метод paint

Метод paint

Оглавление

Первый аплет
Создание проекта
Текст аплета
Методы
Документ HTML
Новый текст
Метод paint
Метод getAppletInfo

Наиболее интересен для нас метод 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
            |
            +---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

Метод paint вызывается, когда необходимо перерисовать окно аплета. Если вы создавали приложения для операционной системы Windows, то наверняка знакомы с сообщением WM_PAINT, которое поступает в функцию окна приложения при необходимости его перерисовки.

Перерисовка окна приложения Windows и окна аплета обычно выполняется асинхронно по отношению к работе приложения или аплета. В любой момент времени аплет должен быть готов перерисовать содержимое своего окна.

Такая техника отличается о той, к которой вы, возможно, привыкли, создавая обычные программы для MS-DOS. Программы MS-DOS сами определяют, когда им нужно рисовать на экране, причем рисование может выполняться из разных мест программы. Аплеты, так же как и приложения 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 - сверху вниз (рис. 9).

Рис. 9. Система координат, используемая методом drawString

На этом же рисунке показано, как метод drawString нарисует текстовую строку с координатами (xCoord, yCoord).