200分求APPLET刷新问题
写出一个APPLET,主要是用来画图用的.如果我的APPLET里不再加别的容器,图就直接画在APPLET之上(APPLET是继承Panel,应该也是个Panel吧).这样结果一切都如意.
但因为我的APPLET第一行有一行是按钮,如果将图直接画在APPLET之上,那么按钮那一行也会占去我的坐标位,真正开始画的原点的坐标已经不是(0,0)了,而是(0,那个按钮行的高度了)。于是,我就在APPLET的中间区域(画图区域)加了一个Canvas,将图全部都画在Canvas之上,这样就保证了坐标点的原点了。
部分代码如下:
public void draw(){
Graphics g = canvas.getGraphics();
g.drawLine(.........);
.....
}
public void paint(Graphics g){
canvas.repaint();
draw();
}
在每次当APPLET有刷新的时候就调用draw()将图重新画一次,updata没有重写.
这个时候出一问题:
当我有别的窗口从APPLET之上拖过的时候,如果别的窗口很小,只是在我的canvas上拖动的时候,APPLET并不会调用我自己写的那个paint()方法,而只是用背景色填充了被别的窗口拖过的地方,没有重新把图画上,我不知是为什么,有人说是要重写canvas的paint()方法,可如果我上面写的paint()方法不能被刚刚那种情况调用,那该如何写了?
但如果我的图是直接画在APPLET之上,不用一个canvas的话,则上面的刷新一切正常。