java编程:为什么repaint()没有调用update呢?
答案:4 悬赏:40 手机版
解决时间 2021-03-31 00:29
- 提问者网友:听门外雪花风
- 2021-03-30 12:48
java编程:为什么repaint()没有调用update呢?
最佳答案
- 五星知识达人网友:duile
- 2021-03-30 12:54
我刚刚也遇到了这个问题,我的解决方法是重写repaint()方法;
对于repaint方法,API中写的是”如果此组件是轻量级组件,则此方法会尽快调用此组件的 paint 方法。否则此方法会尽快调用此组件的
update 方法。“我不知道我的程序属不属于轻量级组件,但是肯定repaint没调用update.所以我只好重写:
public void repaint() {
super.repaint();
update(getGraphics());
}
更改之后就可以了,我是在双缓冲问题上遇到的。
对于repaint方法,API中写的是”如果此组件是轻量级组件,则此方法会尽快调用此组件的 paint 方法。否则此方法会尽快调用此组件的
update 方法。“我不知道我的程序属不属于轻量级组件,但是肯定repaint没调用update.所以我只好重写:
public void repaint() {
super.repaint();
update(getGraphics());
}
更改之后就可以了,我是在双缓冲问题上遇到的。
全部回答
- 1楼网友:迷人又混蛋
- 2021-03-30 15:41
完全同意。这涉及到了继承
- 2楼网友:行雁书
- 2021-03-30 14:58
自己在paint();中写个update(g);
还有点小建议:楼主貌似还有个不好的习惯。。。使用画笔时不先临时保存画笔原来的颜色。。。
建议在用画笔前先 Color tmp = g.getColor(); 用完后g.setColor(tmp);
楼主用的是轻量级的组件JFrame
API中的原话:
repaint
public void repaint(int x,
int y,
int width,
int height)重绘组件的指定矩形区域。
如果此组件是轻量组件,则此方法会尽快调用此组件的 paint 方法。否则此方法会尽快调用此组件的 update 方法。
还有点小建议:楼主貌似还有个不好的习惯。。。使用画笔时不先临时保存画笔原来的颜色。。。
建议在用画笔前先 Color tmp = g.getColor(); 用完后g.setColor(tmp);
楼主用的是轻量级的组件JFrame
API中的原话:
repaint
public void repaint(int x,
int y,
int width,
int height)重绘组件的指定矩形区域。
如果此组件是轻量组件,则此方法会尽快调用此组件的 paint 方法。否则此方法会尽快调用此组件的 update 方法。
- 3楼网友:拾荒鲤
- 2021-03-30 14:17
repaint()需要你自己写覆盖父类的这个方法,你有没指定它调update它怎么会自动去调追问不是说:调用repaint()时,它会自动调用update()然后在调用paint()吗?repaint()走的不是这个流程吗?追答重画的话paint里好像要用super.paint(g)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯