repaint为什么没调update???

knxw0001 2012-10-15 05:30:01

public class Test extends Frame{

@Override
public void paint(Graphics g) {
System.out.println("paint");
}

@Override
public void update(Graphics g) {
System.out.println("update");
paint(g);
}

public static void main(String[]args){
new Test().repaint();
}

}


代码如上;结果是什么也没打印。。。。

不是说repaint调用update,update调用paint吗?
...全文
166 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
raistlic 2012-10-16
  • 打赏
  • 举报
回复
为什么不 setVisible(true),就没有调用 paint() ?

因为 repaint(); 对 paint(); 的调用,不是同步调用(synchronized call)

repaint(); 只是产生了一个内部的“重绘事件”,然后把这个事件递交给了 EDT, 排到这个事件的时候 EDT 一检查,发现事件要求重绘的 Frame 根本没在屏幕上显示,没显示那也就无所谓重绘了,也就不用去调用 paint() 了~
raistlic 2012-10-16
  • 打赏
  • 举报
回复

import java.awt.Frame;
import java.awt.Graphics;


public class Test extends Frame {

@Override
public void paint(Graphics g) {
System.out.println("paint");
}

@Override
public void update(Graphics g) {
System.out.println("update");
paint(g);
}

public static void main(String[] args) {

Test t = new Test();
t.setVisible(true);
t.repaint();
}
}
飞翔的猪头三 2012-10-15
  • 打赏
  • 举报
回复
我到1.7的src文档里看了确实repaint没有调用paint和update,不知何解

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧