In der Graphics-Klasse gibt es keine Methode, um regelmäßige n-Ecken zu zeichnen. Eine solche Methode ist aber leicht und schnell programmiert: Wir teilen dazu einfach einen Kreis in n Teile auf und berechnen die x- und y-Koordinaten der Punkte auf dem Kreis. Diese Punkte fügen wir einem Polygon-Objekt mittels der addPoint(…)-Methode hinzu. Eine eigene statische Methode drawVertex(…) übernimmt diese Polygon-Erstellung. Der letzte Parameter der Methode ist ein Wahrheitswert, der bestimmt, ob das n-Eck gefüllt werden soll oder nicht:
package com.tutego.insel.ui.graphics;
import java.awt.*;
import javax.swing.*;
public class N_Vertex extends JPanel {
private static final long serialVersionUID = -6314283966378303073L;
@Override protected void paintComponent( Graphics g ) {
VertexDrawer.drawVertex( g, getWidth() / 2, getHeight() / 2, 50, 6, true );
VertexDrawer.drawVertex( g, getWidth() / 2, getHeight() / 2, 60, 6, false );
}
public static void main( String[] args ) {
JFrame f = new JFrame();
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.add( new N_Vertex() );
f.setSize( 200, 200 );
f.setVisible( true );
}
}
class VertexDrawer {
public static void drawVertex( Graphics g, int x, int y, int r, int n, boolean filled ) {
Polygon p = new Polygon();
for ( int i = 0; i < n; i++ )
p.addPoint( (int) (x + r * Math.cos( i * 2 * Math.PI / n )),
(int) (y + r * Math.sin( i * 2 * Math.PI / n )) );
if ( filled )
g.fillPolygon( p );
else
g.drawPolygon( p );
}
}