重绘之画图板

       上次博客讲的五子棋重绘比较简单,因为只要在重写系统重绘方法paint()时加入棋盘和棋子的绘制。这次我想说说画图板的重绘。
       画图板重绘难在需要重绘的类型很多,比如说里面有矩形,园,直线之类的,所以我们要想办法将里面的图形加入一个队列中,这样在重绘时就可以取出队列中的所以图形,然后绘制。
  首先我们可以创建一个接口,命名为shape(),里面只有draw()一个方法,这样我们建其他图形类时都可以继承这个接口,例如
public class Rect implements Shape{
   int x,y,width,height;

           public Rect(int x, int y, int width, int height) {
                     super();
                     this.x = x;
                     this.y = y;
                     this.width = width;
                     this.height = height;
   }

                  public void draw(Graphics g) {
                  g.drawRect(x, y, width, height);

          }

}
       这样我们每在画图板上绘制一个图形,都同时把这个图形加入队列list中,重绘时只要把每个图形取出来,然后调用它的draw()方法,这样就全部绘制出来了。
       JPanel drawpanel =new JPanel(){

       public void paint(Graphics g){

        super.paint(g);   for(int i=0;i<list.size(); i++){
         Shape shape = (Shape)list.get(i);
         shape.draw(g);
     }
}
         };

你可能感兴趣的