这是教材上的一个applet程序,这个程序是运行成功的!!
当按下鼠标时记录鼠标位置,松开鼠标时画出矩形,我奇怪的是:
程序里定义了paint()函数,却没有调用它,调用的是repaint()函数,为什么?repaint函数哪里定义的?
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class App15_1 extends Applet implements MouseListener
{
int x1,x2,y1,y2,width,height;
boolean flag=false;
public void init()
{
this.addMouseListener(this);
}
public void mousePressed(MouseEvent e)
{
flag=true;
x1=e.getX();
y1=e.getY();
}
public void mouseReleased(MouseEvent e)
{
x2=e.getX();
y2=e.getY();
repaint();
}
public void paint(Graphics g)
{
if(flag)
{
width=Math.abs(x2-x1);
height=Math.abs(y2-y1);
if(x1>x2 && y1>y2)
{x1=x2;y1=y2;}
else if(x1>x2 && y1<y2)x1=x2;
else if(x1<x2 && y1>y2)y1=y2;
g.drawRect(x1,y1,width,height);
}
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
}
----------------解决方案--------------------------------------------------------
repaint函数是父类里面定义的,你继承了Applet,就有了,Applet也是从它的父类那里继承过来 的
----------------解决方案--------------------------------------------------------
可是,这个程序里定义的paint函数有什么用呢?我怎么看不出来在什么时候调用了它?
----------------解决方案--------------------------------------------------------
paint方法会自动调用,还有,你调用repaint方法时,先会调用update方法,然后会调用paint方法
----------------解决方案--------------------------------------------------------
谢谢
----------------解决方案--------------------------------------------------------