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);
}
}
|