本意是通过通过事件处理改变i的值,结果发现不用改变,这个程序能够自动循环出现三张图片,而且开始换得快,最后换得慢,直至最后不变了。难道paint()会自动调用自己?可是为什么最后又会停止,而且开始和后来频率不一样呢?具体可以观察在控制台输出的i的值,一直在变,想不通!请帮助!
程序代码如下:
import java.awt.*;
import java.applet.*;
public class ImageDemo extends Applet {
   Image i1,i2,i3;
   int i=1;
   
   public void init() {
    i1 = getImage(getCodeBase(), "1.jpg");
    i2 = getImage(getCodeBase(), "2.jpg");
    i3 = getImage(getCodeBase(), "3.jpg");
    i1=i1.getScaledInstance(800,600,i1.SCALE_AREA_AVERAGING);//缩放显示
    i2=i2.getScaledInstance(800,600,i2.SCALE_AREA_AVERAGING);
    i3=i3.getScaledInstance(800,600,i3.SCALE_AREA_AVERAGING);
  }
  public void paint(Graphics g) 
  {
   System.out.println(i);
  switch(i)
  {  case 1:
   g.drawImage(i1,20,20,this);
     i=i+1;  //i增一
     break;
      case 2:
   g.drawImage(i2,20,20,this);
   i=i+1;  break;
      case 3:
   g.drawImage(i3,20,20,this);
   i=i+1;  break;
      default:
   i=1;
   break;
  }
   
  
  }
}

解决方案 »

  1.   

    我不知道我说的是不是一定的对!
    你上面定义了一个成员变量赋值了是1!难后在后面的swith()条件为i;i的值应该是恒为1!看看是不是这里的问题!
      

  2.   

    呵呵,paint函数是会被自动调用的,当界面需要重画时(比如这个Applet初始化时,或被其它窗口遮住后其它窗口又移开时,系统会叫Applet自动重画自己,再次显示在屏幕上,于是,paint()就被调用了)
    至于效率变化问题,楼主自己结合当时的实际情况想想吧~^_^