上次博客讲的五子棋重绘比较简单,因为只要在重写系统重绘方法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);
}
}
};