import java.awt.*;
import java.util.Timer; 
import java.util.TimerTask;
import java.applet.*;
public class TimerTest extends Applet{
Image image;
static int i=0;
    public void init(){
     try{
    
     if(i==0)
         image=getImage(getCodeBase(),"3009.jpg");
     if(i==1)
         image=getImage(getCodeBase(),"3010.jpg");
     if(i==2)
         image=getImage(getCodeBase(),"3011.jpg");
     if(i==3)
         image=getImage(getCodeBase(),"3012.jpg");
     if(i==4){
     i=-1;
     image=getImage(getCodeBase(),"3009.jpg");
     }
     i++;
     }
     catch(Exception e){
     e.printStackTrace();
     }
    }
    
    public void paint(Graphics g){
     g.drawImage(image, 10, 10, this);
    }
    
    public static void main(String[] args){
    
     TimerTask task=new TimerTask() {

@Override
public void run() {
// TODO Auto-generated method stub
final TimerTest timertest=new TimerTest();
timertest.repaint();
}
};
Timer timer=new Timer();
timer.schedule(task, 1000, 500);
    }
}

解决方案 »

  1.   

    init方法不会执行多次吧.....写在paint方法中去
      

  2.   

    更换图片后 obj.repaint()重绘一下。
      

  3.   


    import java.awt.*;
    import java.util.Timer;  
    import java.util.TimerTask;
    import java.applet.*;
    public class TimerTest extends Applet{
    Image image;
    static int i=0;
    public void init(){
    this.setBounds(0,0,800,800);
    final TimerTest timertest=this;
    TimerTask task=new TimerTask() {
    @Override
    public void run() {
    System.out.println("XXX");
    timertest.change();
    timertest.repaint();
    }
    };
    Timer timer=new Timer();
    timer.schedule(task,1000, 5000);
    }
    public void change()
    {
    try{ if(i==0)
    image=getImage(getCodeBase(),"1.jpg");
    if(i==1)
    image=getImage(getCodeBase(),"2.jpg");
    if(i==2)
    image=getImage(getCodeBase(),"3.jpg");
    if(i==3)
    image=getImage(getCodeBase(),"4.jpg");
    if(i==4){
    i=-1;
    image=getImage(getCodeBase(),"5.jpg");
    }
    i++;
    }
    catch(Exception e){
    e.printStackTrace();
    }
    }
    public void paint(Graphics g){
    g.drawImage(image, 10, 10, this);
    } public static void main(String[] args){
    final TimerTest timertest=new TimerTest();
    TimerTask task=new TimerTask() {
    @Override
    public void run() {
    try {
    Thread.sleep(2000);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    timertest.repaint();
    }
    };
    Timer timer=new Timer();
    timer.schedule(task,1000, 5000);
    }
    }