package swing;
import java.awt.Color; 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;
/** * 体验fill方法填充颜色 * @param args */ public class FillTest extends JFrame {
public static final int DEFAULT_WIDTH=400; public static final int DEFAULT_HEIGHT=400; //main方法 public static void main(String[] args) { FillTest fillTest =new FillTest(); fillTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fillTest.setVisible(true); } //构造器 public FillTest() { setTitle("Fill Test"); setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); //add panel to frame DrawPanel panel=new DrawPanel(); add(panel); }
//私有类定义所加panel的特性 private class DrawPanel extends JPanel { //overrides javax.swing.JComponent.paintComponent public void paintComponent(Graphics g) { //让超类完成自己的工作 super.paintComponent(g); Graphics2D g2=(Graphics2D)g; //draw a rectangle double leftX=100; double topY=100; double width=200; double height=150; Rectangle2D rect=new Rectangle2D.Double(leftX,topY,leftX+width,topY+height); g2.setPaint(Color.RED); g2.fill(rect); //draw the closed Ellipse Ellipse2D ellipse=new Ellipse2D.Double(); ellipse.setFrame(rect); g2.setPaint(new Color(0,128,128)); g2.fill(ellipse); //draw a diagonal line g2.draw(new Line2D.Double(leftX,topY,leftX+width,topY+height)); //draw the circle with the same center 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.draw(circle); } }
}