JPanel绘制图片延时的问题,郁闷了好久

craighit 2005-10-08 10:56:13
执行的代码如下:
public void paint(Graphics g){
super.paintComponent(g);
g.drawImage(digit[minute/10],0,0,this);//显示分钟数的十位
g.drawImage(digit[minute%10],imageWidth,0,this);//显示分钟数的个位
g.drawImage(digit[10],imageWidth*2,0,this); //显示中间的":"分隔符
g.drawImage(digit[second/10],imageWidth*3,0,this);//显示秒钟的十位
g.drawImage(digit[second%10],imageWidth*4,0,this);//显示秒钟的个位
}
minute和second都是一个两位整数,Image型digit[11]数组里放的是11张图片,digit[0]对应数字0,依此类推...digit[10]是分钟与秒钟的分隔符":".这段代码是
一个JPanel子类的paint方法,它隔一秒钟被调用一次(利用java.util.Timer.scheduleAtFixedRate方法)以用图片的形式显示时间.现在问题是最终结果是对的,
也就是说设定时间为10秒,则它会在10秒从10绘制到00,,但是中间绘制的频率不稳定,有时候1秒绘制一次,有时大于1秒,这时后面的数字就被覆盖了.举例说当21绘制出来后,它会停留大于1秒的时间,等到下次刷新时显示的是19了!!!
我以为是5次调用g.drawImage耗费了时间,但是我在第一个前获取一次系统时间(用System.currentTimeMillis()静态方法),在最后一个后也获取一次,两次相差结果是0!!!
真不知问题出在哪!郁闷!!

...全文
221 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
craighit 2005-10-09
  • 打赏
  • 举报
回复
问题解决了,谢谢了.
醉梦书生 2005-10-08
  • 打赏
  • 举报
回复
在Java中并不是每次调用paint()都是真的paint了,java会根据实际情况合并对paint()调用的,在swing中可以调用JComponent.paintImediately()立即重绘
醉梦书生 2005-10-08
  • 打赏
  • 举报
回复
在Java中并不是每次调用都是真的paint了,java会根据实际情况合并调用的在swing中可以调用JComponent.paintImediately()立即重绘
craighit 2005-10-08
  • 打赏
  • 举报
回复
补充说明一下上面的问题:我后来测试了一下,,这个方法的调用频率是非常精确的,而且上面也说明了它的执行过程并不怎么耗时间,,就是最后看到的效果有延迟,郁闷

62,615

社区成员

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

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