public void paint(Graphics g){
System.out.println("paint");
}
public void update(Graphics g){
System.out.println("update");
}
public void repaint(Graphics g) {
System.out.println("repaint");
}repaint 方法:输出:repaint paint
update 方法: 输出:update paint
System.out.println("paint");
}
public void update(Graphics g){
System.out.println("update");
}
public void repaint(Graphics g) {
System.out.println("repaint");
}repaint 方法:输出:repaint paint
update 方法: 输出:update paint
你把repaint都重写成那样了
哪里会调用update啊
说原来的repaint会调用update
是因为repaint方法中有一句话是update();
{
public MyCanvas()
{
super();
}
public void repaint()
{
super.repaint();
System.out.println("repaint");
}
public void update(Graphics g)
{
super.update(g);
System.out.println("update");
}
public void paint(Graphics g)
{
super.paint(g);
System.out.println("paint");
}
public static void main(String[] args)
{
Frame frame = new Frame();
frame.setLayout(new BorderLayout());
MyCanvas canvas = new MyCanvas();
frame.add(canvas, BorderLayout.CENTER);
frame.setSize(300, 100);
frame.validate();
frame.setVisible(true);
canvas.repaint();//注意
}
}
这里Canvas类是重量级组建
默认repaint方法是会调用update的
如果注释掉注意那句话
输出是:
paint如果没注释掉canvas.repaint()
输出是:
repaint
paint
paint
update其中有一个paint是不调用canvas.repaint()就会输出的
那么剩下
repaint
paint
update也许你会奇怪为什么update在paint之后输出
看下我们重写的update
public void update(Graphics g)
{
super.update(g);//这里面包含paint() 所以paint在update前输出了
System.out.println("update");
}