package javacodebook.media.draw.simple; import java.awt.*; import java.awt.geom.*; import javax.swing.*; /** * Ein einfaches Panel, um die Zeichenmöglichkeiten in Java zu demonstrieren. */ public class SimpleDraw extends JPanel{ /** * In Swing sollte im Gegensatz zum AWT immer die Methode paintComponent * überschrieben werden. */ public void paintComponent(Graphics graphics) { super.paintComponent(graphics); //Graphics-Objekt ist in Wahrheit ein Graphics2D-Objekt Graphics2D g = (Graphics2D) graphics; //aktuelle Zeichenfarbe setzen g.setColor(Color.black); //Eine Linie zeichnen g.draw(new Line2D.Double(0,100,319,100));//Java2D-Version //Ein Rechteck zeichnen g.draw(new Rectangle2D.Double(10, 10, 80, 60)); //Einen Kreis gefüllt zeichnen g.draw(new Ellipse2D.Double(130,10,60,60)); //Eine Ellipse mit Farbverlauf gefüllt zeichnen g.draw(new Ellipse2D.Double(230, 10, 80, 60)); //Ein Rechteck mit abgerundeten Ecken zeichnen g.draw(new RoundRectangle2D.Double(10, 110, 80, 60, 15, 15)); //Eine Kreisbogen zeichnen g.draw(new Arc2D.Double(120, 110, 80, 70, 90, 135, Arc2D.OPEN)); //Ein Tortenstück zeichnen g.draw(new Arc2D.Double(240, 110, 80, 80, 90, 45, Arc2D.PIE)); } /** Die gewünschte Größe des Panels festlegen */ public Dimension getPreferredSize() { return new Dimension(320, 200); } /** Einen Frame erzeugen und das Panel anzeigen */ public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); f.getContentPane().setLayout(new BorderLayout()); f.getContentPane().add(new SimpleDraw(), BorderLayout.CENTER); f.pack(); f.show(); } }