Graphics2D g2D = (Graphics2D) g;
    public void draw(Graphics g, Point2D[] points, boolean complete) {        Graphics2D g2D = (Graphics2D) g;        setGraphics(g);        int nbpts = points.length;        int xcoord[] = new int[nbpts + 2];        int ycoord[] = new int[nbpts + 2];        for (int i = 0; i < nbpts; i++) {            xcoord[i] = (int) points[i].getX();            ycoord[i] = (int) points[i].getY();        }        if (complete) {            int orient = getOrientation() == LEFT ? -1 : 1;            // Compute cosinus and sinus of rotation angle            double dx = points[nbpts - 1].getX() - points[0].getX();            double dy = points[nbpts - 1].getY() - points[0].getY();            double norm = Math.sqrt(dx * dx + dy * dy);            double rcos = dx / norm;            double rsin = dy / norm;            // Compute vertices            double r = getLength() / 2.0; // x radius before rotation            double w = orient * getWidth(); // y radius before                                            // rotation            // rotate            xcoord[nbpts] = (int) (points[0].getX() + r * rcos - w * rsin);            ycoord[nbpts++] = (int) (points[0].getY() + r * rsin + w * rcos);            // link to start            xcoord[nbpts] = (int) points[0].getX();            ycoord[nbpts++] = (int) points[0].getY();            if (filled)                g.fillPolygon(xcoord, ycoord, nbpts);        }        g.drawPolyline(xcoord, ycoord, nbpts);        restoreGraphics(g);    }