在Java中与图形界面密切相关的一个类是Graphics类,这个类是一个抽象类,所以是不能直接用来创建对象的,但是其中有很多方法却是我们经常要用到的,而这个类经常出现在JComponent类的paint()方法中,paint()方法是我们调用repaint()时自动调用的,所以paint()方法的重写就显得特别重要了。下面主要记录在paint()方法中经常调用的Graphics中的一些方法:

public abstract void drawLine(int x1,int y1,int x2,int y2);//绘制直线
//x1,y1是第一个点的x坐标,y坐标,x2,y2是第二个点的x坐标,y坐标
//由于在Java中画线画的是我们在几何意义上的线段,所以会有两个顶点来固定其位置
public abstract void drawRect(int x,int y,int width,int height);//绘制矩形
//x,y是矩形左上角的坐标,width,height是矩形的宽高
public abstract void fillRect(int x,int y,int width,int height);//绘制带填充色的矩形
//参数同上
public abstract void drawOval(int x,int y,int width,int height);//绘制椭圆
//参数是其外接矩形相对应的参数
public abstract void fillOval(int x,int y,int width,int height); //绘制带填充色的椭圆
//参数同上
public abstract void drawArc(int x,int y,int width,int height,int startAngle,int arcAngle);//绘制圆弧
//x,y是绘制弧的左上角的坐标,width是弧的宽度,height是弧的高度,startAngle是开始角度,arcAngle是相对于开始角度而言,弧跨越的角度
public abstract void fillArc(int x,int y,int width,int height,int startAngle,int arcAngle);//绘制指定角度的填充扇形
//x,y是绘制扇形的左上角的坐标,width是扇形的宽度,height是扇形的高度,startAngle是开始角度,arcAngle是相对于开始角度而言,弧跨越的角度
public abstract void drawPolygon(int[] xPoints,int[] yPoints,int nPoints);//绘制多边形
//xPoints,yPoints是多边形的坐标数组,nPoints是多边形的顶点总数
public abstract void fillPolygon(int[] xPoints,int[] yPoints,int nPoints);//绘制填充颜色的多边形
//参数同上

以上的方法都是在重写JComponent中的paint的方法时调用的,大致调用如下:

class MyPanel extends JPanel{
	public void paint(Graphics g){
		g.drawLine(x1,y1,x2,y2);//绘制直线
		g.drawRect(int x,int y,int width,int height);//绘制矩形
		g.fillRect(int x,int y,int width,int height);//绘制带填充色的矩形
		g.drawOval(int x,int y,int width,int height);//绘制椭圆
		g.fillOval(int x,int y,int width,int height);//绘制带填充色的椭圆
		g.drawArc(int x,int y,int width,int height,int startAngle,int arcAngle);//绘制圆弧
		g.fillArc(int x,int y,int width,int height,int startAngle,int arcAngle);//绘制指定角度的填充扇形
		g.drawPolygon(int[] xPoints,int[] yPoints,int nPoints);//绘制多边形
		g.fillPolygon(int[] xPoints,int[] yPoints,int nPoints);//绘制填充颜色的多边形
	}
}

除此之外,还有可供绘制曲线的方法,通过创建曲线对象,调用Graphics2D类的draw()方法,将曲线对象作为draw()的参数即可实现绘制曲线

//绘制曲线
public QuadCurve2D.Double(double x1,double y1,double ctrlx,double ctrly,double x2,double y2);//创建二次曲线对象
//x1,y1是起始点的坐标,ctrlx,ctrly是控制点(转折点)的坐标,x2,y2是结束点的坐标
public CubicCurvel2D.Double(double x1,double y1,double ctrlx1,double ctrly1,double ctrlx2,double ctrly2,double x2,double y2);
//创建三次曲线对象
//x1,y1是起始点的坐标,ctrlx1,ctrly1是第一个控制点(转折点)的坐标,ctrlx2,ctrly2是第二个控制点(转折点)的坐标,x2,y2是结束点的坐标
//具体用法
class DrawCurvePanel extends JPanel{
		public void paint(Graphics g){
				Graphics2D g2 = (Graphics2D)g;
				QuadCurve2D.Double quadCurve = new QuadCurve2D.Double(60,20,120,100,180,20);
				g2.draw(quadCurve);//绘制二次曲线
				 CubicCurvel2D.Double cubicCurve = new CubicCurvel2D.Double(20,80,140,-140,140,300,260,80);
				 g2.draw(cubicCurve);//绘制三次曲线
		}
}