有一点我可以肯定,这两者都会自动调用paint方法。

解决方案 »

  1.   

    转的paint()是在组件第一次显示时调用,完成组件的绘制。       
      update()进行初始化(背景色填充、设置组件前景色)后调用paint()绘制组件。       
      repaint()则调用update()。它之所以存在是因为要支持以不同的方式进行update()操作,如:repaint();repaint(long     time);repaint(int     x,int     y,int     width,int     height),无参的repaint()只是对update()进行简单的调用。       
          
      可以说,paint()是最原子的操作,update()则允许在它之上对它的外观进行一些定制,repaint()则偏重于定制调用的方式:你可以在指定时间间隔后进行重画,也可以在指定区域内绘制组件,等等。 
      

  2.   

    调用update()比 repaint()得坐标要向下低20个左右的像素
      

  3.   

    有一个东西叫googlerepaint()方法用于重绘组件,该方法有下面四种形式:1。public void repaint()2。public void repaint(long tm)//指定调用update方法之前等待的最大毫秒数tm3。public void repaint(int x,int y,int width,int height)//重绘组件的指定矩形区域4。public void repaint(ling tm,int x,int y,int width,int height)
    repaint方法不总是马上执行,Java虽然会尽可能快的执行repaint,当Applet运行在较慢的平台上或计算机较忙时,应该考虑使用第2或4种repaint方法,指定在多长时间内必须执行repaint,否则就放弃。Update()方法用于更新组件,AWT调用该方法以响应对repaint()的调用,在调用update()或paint()之前,组件的外观将不会发生改变。它更新组件的步骤为:通过充填组件的背景色来清除该组件,然后,设置图形上下文(其原点为该组件的左顶点)的颜色为该组件的前景色,最后,调用paint方法完整地重绘该组件。该方法的原型为:Public void update(Graphics g)Paint()方法用于绘制组件,当需要绘制组件的内容时调用该方法。该方法的原型为:Public void paint(Graphics g)
      

  4.   

    如果调用repaint(),则相当于先自动调用update(),再自动调用paint()方法。
      

  5.   

    首先你要分清轻量级组件和重量级组件对于轻量级组件
    repaint方法会尽快调用paint方法对于重量级组件
    repaint方法会调用update方法
    来看下Canvas类的update方法public void update(Graphics g) {
            g.clearRect(0, 0, width, height);
            paint(g);
        }
    对于重量级组件repaint方法只是调用update方法
    而paint方法是默认update方法的一部分
    所以如果对于重量级组件
    你重写了update方法让它不调用paint方法
    那你的repaint的方法就不会调用到paint方法了
    你所肯定的东西在这种条件下是错的
      

  6.   

    如果你repaint()就首先调用update();