рисовать фигуры в Java-апплет - init (), paint () и repaint () - PullRequest
2 голосов
/ 08 ноября 2011

У меня проблема с рисованием многоугольника в апплете Java. Я не понимаю, что не так с этим кодом. У меня есть класс с именем DrawPoly, который содержит:

import java.awt.*;
import java.awt.geom.Point2D;
import java.applet.Applet;
import java.util.Vector;

public class DrawPoly extends Applet{
Polygon poly;
public void init(Graphics g){

        Polygon poly=new Polygon();
        poly.addPoint(60,100);

}
public void paint(Graphics g)
{
    Graphics2D gg;
    gg=(Graphics2D) g;
     System.out.println("number is"+ poly.npoints);
    }
 }

Я не понимаю, почему следующий код не работает. Я хотел бы создать глобальный многоугольник, инициализировать его в init, а затем выполнить несколько 2D-преобразований, таких как вращение при рисовании. Что мне не хватает? Я только добавил один пункт, чтобы увидеть, если инициализации являются основными. Я не хочу инициализировать полигон в paint (), потому что я могу захотеть использовать repaint (), и полигон будет инициализироваться каждый раз, когда я вызываю repaint (). Если бы вы могли помочь мне. Большое спасибо.

1 Ответ

2 голосов
/ 08 ноября 2011

DrawPoly Applet

/* <applet code='DrawPoly' width=200 height=110></applet> */
import java.awt.*;
import java.applet.Applet;

public class DrawPoly extends Applet {

    Polygon poly;

    // init(Graphics) is not an applet method
    //public void init(Graphics g){
    @Override
    public void init() {
        // this declaration is creating a variable local
        // to the init() method
        //Polygon poly=new Polygon();
        poly=new Polygon();
        poly.addPoint(60,100);
        // at least add a 2nd point!
        poly.addPoint(160,60);
    }

    public void paint(Graphics g) {
        Graphics2D gg;
        gg=(Graphics2D) g;
        System.out.println("number is"+ poly.npoints);
        // the Polygon is never painted!
        gg.setColor(Color.BLACK);
        gg.drawPolygon(poly);
    }
}
...