Программирование на Java

       

Метод paint


Первым делом метод paint определяет размеры окна аплета, вызывая для этого метод getSize:

Dimension dimAppWndDimension = getSize();

Метод getSize возвращает ссылку на объект класса Dimension, хранящий высоту и ширину объекта:

  • height
  • Высота

    public int height;

  • width
  • Ширина

    public int width;

    В классе Dimension предусмотрено три конструктора и один метод:

    public Dimension(); public Dimension(Dimension d); public Dimension(int width, int height);

  • toString
  • Получение строки, представляющей класс

    public String toString();

    После определения размеров окна аплета метод paint стирает содержимое всего окна:

    g.clearRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1);

    Далее в контексте отображения устанавливается желтый цвет:

    g.setColor(Color.yellow);

    Этим цветом заполняется внутренняя область окна аплета, для чего применяется метод fillRect:

    g.fillRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1);

    Затем метод paint устанавливает в контексте отображения черный цвет и рисует тонкую черную рамку вокруг окна аплета:

    g.setColor(Color.black); g.drawRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1);

    На следующем этапе мы получаем метрики текущего шрифта, выбранного в контекст отображения:

    fm = g.getFontMetrics();

    Пользуясь этими метриками, мы определяем высоту символов текущего шрифта и записываем ее в поле yStep:

    yStep = fm.getHeight();

    После этого метод paint запускает цикл по всем шрифтам, установленным в системе:

    for(int i = 0; i < szFontList.length; i++) { . . . }

    Количество доступных шрифтов равно размеру массива szFontList, которое вычисляется как szFontList.length.

    Метод paint выписывает в окне аплета название каждого шрифта, устанавливая для этого шрифт Helvetica размером 12 пикселов:

    g.setFont(new Font("Helvetica", Font.PLAIN, 12)); g.drawString(szFontList[i], 10, yStart + yStep * i);

    Смещение каждой новой строки с названием шрифта вычисляется исходя из высоты символов установленного шрифта:


    fm = g.getFontMetrics(); yStep = fm.getHeight();

    После названия шрифта метод paint рисует в окне аплета текстовую строку parm_TestString, полученную через параметр с именем "TestString":

    g.setFont(new Font(szFontList[i], Font.PLAIN, 12)); g.drawString(parm_TestString, 100, yStart + yStep * i);

    Перед тем как перейти к рисованию геометрических фигур, метод paint запоминает в поле yDraw координату последней строки названия шрифта, сделав отступ высотой yStep :

    int yDraw; yDraw = yStart + yStep * szFontList.length + yStep;

    Первая фигура, которую рисует наш аплет, это многоугольник.

    Мы создаем многоугольник как объект класса Polygon:

    Polygon p = new Polygon();

    В этот объект при помощи метода addPoint добавляется несколько точек:

    p.addPoint(70, yDraw); p.addPoint(150, yDraw + 30); p.addPoint(160, yDraw + 80); p.addPoint(190, yDraw + 60); p.addPoint(140, yDraw + 30); p.addPoint(70, yDraw + 39);

    После добавления всех точек метод paint рисует многоугольник, вызывая для этого метод drawPolygon:

    g.drawPolygon(p);

    Затем мы устанавливаем в контексте отображения красный цвет и рисуем прямоугольник:

    g.setColor(Color.red); g.drawRect(10, yDraw + 85, 200, 100);

    Затем метод paint вписывает в этот прямоугольник сегмент окружности:

    g.setColor(Color.black); g.drawArc(10, yDraw + 85, 200, 100, -50, 320);


    Содержание раздела