java编写的图形界面,为什么会闪烁

java中,关于paint,repaint,update的具体执行动作是什么,比如说我用paint把屏幕变成绿色,不是说执行顺序是repaint->update->paint吗,若之后又调用repaint,而此时paint中的绘制操作是把屏幕上边变成红的,那么结果是上边是红的,下边是绿的吗。
简单说,paint,repaint,update中的调用,以及覆盖,屏幕清为空白,绘制,各种关系各种调用顺序是什么。

另外,上面的问题可以用查api的方式自己找到答案吗,因为实在不想每个问题都拿出来问,还麻烦大家。

1、因为调用了repaint方法,或者调用repaint(x,y,w,h)局部刷新
2、可调用java 的awt/swing控件,下面贴一个示例代码:
public static void main(String args[]){
JFrame jf = new JFrame();
jf.getContentPane().setLayout(new FlowLayout());
jf.getContentPane().add(new JButton("测试"));
jf.setSize(320, 240);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-11
public void paint(Graphics g)

是绘制组件。
public void update(Graphics g)
是更新组件。
public void repaint()
重绘此组件。
具体在api中可以索引component类详细查询。追问

闪烁怎么产生的?
我的贪吃蛇程序不加上面的程序会闪烁,加了上面的之后蛇的尾巴除不掉,一直拖着。为什么呢

第2个回答  2014-04-11
闪烁 是因为 调用的repaint方法,你试试update(getGraphics())方法试试,repaint已经是重绘了,或者你调用repaint(x,y,w,h)局部刷新追问

paint的内容一直是一样的,为什么也会闪烁呢,就是有段时间屏幕是空白的呗。
update和repaint有什么不同呢

追答

update 和 repaint 在swing中区别已经很小了,没有特殊的情况 直接掉用repaint吧

给个代码 你分别尝试一下,能看出其中的区别



本回答被提问者和网友采纳
第3个回答  2014-04-11
解决闪烁,双缓冲技术,也就是屏外绘制。
相似回答