Simple Example
Home ] Up ] [ Simple Example ] Sun's Java 2D Demo ]

 

 

To use Java 2D graphics, the same basic principles apply as for the older, more primitive, approach:

  • Override the paintComponent method.
  • Write your rendering code inside your paintComponent method.

The major difference is that you must obtain an object of the java.awt.Graphics2 class. 

Here's an example:

package swingExamples;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Container;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;

import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

class Java2DShapesDisplayPanel extends JPanel
{
  public void paintComponent(Graphics g)
  {
    super.paintComponent(g);
    
    Graphics2D g2 = (Graphics2D) g;
    
    // Create a BasicStroke for drawing outlines
    BasicStroke stroke = new BasicStroke(3.0F,
        BasicStroke.CAP_ROUND,
        BasicStroke.JOIN_ROUND);
    g2.setStroke(stroke);
    
    // Draw a rectangle
    double leftX = 100;
    double topY = 100;
    double width = 200;
    double height = 150;
    Rectangle2D rect = new Rectangle2D.Double(leftX, topY, width, height);
    g2.setPaint(Color.GRAY);
    g2.draw(rect);
    
    // Draw the enclosed ellipse, with a gradient fill
    Ellipse2D ellipse = new Ellipse2D.Double();
    ellipse.setFrame(rect);
    GradientPaint gp = new GradientPaint(120, 100, Color.RED,
                                         170, 190, Color.ORANGE);
    g2.setPaint(gp);
    g2.fill(ellipse);
    
    // Draw a diagonal line, with a different stroke
    stroke = new BasicStroke(7.0F, BasicStroke.CAP_BUTT,
                                   BasicStroke.JOIN_ROUND);
    g2.setStroke(stroke);
    g2.setPaint(Color.GREEN);
    g2.draw( new Line2D.Double(leftX, topY, 
                               leftX + width, topY + height) );
    
    // Draw a circle with the same center, using a dashed stroke
    stroke = new BasicStroke(3.0F,
                             BasicStroke.CAP_BUTT,
                             BasicStroke.JOIN_BEVEL,
                             0, new float[] {12, 12}, 0);
    g2.setStroke(stroke);
    
    double centerX = rect.getCenterX();
    double centerY = rect.getCenterY();
    double radius = 150;
    Ellipse2D circle = new Ellipse2D.Double();
    circle.setFrameFromCenter(centerX, centerY,
        centerX + radius, centerY + radius);
    g2.setPaint(Color.BLUE);
    g2.draw(circle);
  }
}

class Java2DShapesDisplayFrame extends JFrame
{
  public Java2DShapesDisplayFrame()
  {
    setTitle("Java2D Shapes Display");
    setSize(400, 400);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    Container contentPane = getContentPane();
    contentPane.add( new Java2DShapesDisplayPanel() );
  }
}

public class Java2DShapesDisplay
{
  public static void main(String[] args)
  {
    Java2DShapesDisplayFrame frame = new Java2DShapesDisplayFrame();
    frame.setVisible(true);
  }
}

which produces the following output:

 

This page was last modified on 02 October, 2007