//我想用下面的代码实现按一下按键就开始切换3次图片 每次sleep500毫秒 但是运行出来结果都只是显示最后一次切换的结果,我想让他像动画那样运行怎么办啊?   (我不用KeyListener的时候 把Keypressed方法里面的内容放在main函数里运行就正常……问题是不是出在这里啊?)
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;public class aaaaaaa extends JFrame{
private static mPanel a1;
   final static mPanel panel=new mPanel();
       public static void main(String[] args)throws InterruptedException{
        aaaaaaa a=new aaaaaaa();
           a.add(panel);
           a1=panel;
           a.validate();
       }
        public aaaaaaa(){
        setSize(800,600);
        setVisible(true);
       }
}
class mPanel extends JPanel implements KeyListener{
public int i=0;
int a1,b1;
public mPanel(){
setSize(800,600);
setFocusable(true);
        addKeyListener(this);
}
public ImageIcon[] icon={new ImageIcon("Image/floor.gif"),new ImageIcon("Image/wall.gif")};
public void paint(Graphics g){
super.paint(g);
g.drawImage(icon[i].getImage(),0,0,10,10,a1,b1,a1+32,b1+32,null);
}
public void setI(int a){
i=a;
}
public void setab(int a,int b){
a1=a;
b1=b;
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub

}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub

}
@Override
public void keyTyped(KeyEvent e) {
setI(1);
        repaint();
        try {
Thread.sleep(500);
} catch (InterruptedException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}
        setI(0);
        repaint();
        try {
Thread.sleep(500);
} catch (InterruptedException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();

        setI(1);
        repaint();
        try {
Thread.sleep(500);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}