Ernesto, estaria bueno que expliques un poco cual es el funcionamiento que esperas del programa. Asi quizas te podemos ayudar...
Ernesto, busca un poco sobre SwingWorker y seguramente resolverá tus problemas. Estás ejecutando los métodos de las clases gráficas en el hilo de ejecución principal, en lugar de en el EDT. La clase SwingWorker está para evitar eso.
Buenas, Alguien me puede explicar por qué no funciona el repaint() del método anim()?
Gracias y un saludo.
public class Main2 {
public static void main(String[] args) {
JFrame Frame=new JFrame("JUEGO");
Frame.setBounds(200, 100, 500, 400);
Frame.setDefaultCloseOperation(Frame.EXIT_ON_CLOSE);
Frame.setVisible(true);
Animacion A1= new Animacion();
Frame.addKeyListener(A1);
Frame.add(A1);
}
}
class Animacion extends JPanel implements KeyListener{
private File IMG[]=new File[5];
private int pos=0;
private Image[] Imagen= new Image[5];
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
for(int i= 0; i<5;i++){
IMG[i]=new File("src/movePackage/p/p"+i+".png");
}
for(int i= 0; i<5;i++){
try{
Imagen[i]=ImageIO.read(IMG[i]);
}
catch(IOException e){
System.out.println("ERROR");
}
}
g.drawImage(Imagen[pos], 100, 100, null);
}
public void Anim(){
for(int i = 0; i <5;i++){
pos =i;
repaint();
System.out.println("blucle");
try{
Thread.sleep(200);
}
catch(Exception e){
}
}
for(int i = 4; i>-1;i--){
pos =i;
repaint();
System.out.println("blucle2");
}
}
private int codigo;
public void keyPressed(KeyEvent e) {
codigo=e.getKeyCode();
System.out.println("EVENT");
if (codigo == 82){
Anim();
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
}