2010-12-02 31 views
7

En la función reemplazada por mi JFrame:Display gif animado en JPanel

@Override 
protected void paintComponent(Graphics g) { 

    BufferedImage imagePerson; 
    try { 
     imagePerson = ImageIO.read(new File("errol.gif")); 
    } catch (IOException e) { 
     imagePerson = null; 
    } 

    g.drawImage(imagePerson, i * increment, j * increment - 1, null); 
} 

¿Cómo puedo cambiar esto para la animación en el gif se muestra (sin necesidad de utilizar el roscado). He pasado muchas horas tratando de hacer que esto funcione, pero fue en vano.

+5

Independientemente de la solución que elija, es probable que no desee * cargar * imágenes cada vez que se llame a 'paintComponent'. Ese método se llama ** lote **. Cargúelos una vez en la inicialización y guárdelos en una variable de instancia de su clase. –

Respuesta

5

Puede usar ImageIcon para este fin. Eche un vistazo here y here. Si necesita la animación en un JPanel, simplemente agregue un JLabel (con el ImageIcon) al panel.

+0

El asunto es que quiero mover la posición del gif animado alrededor del jpanel con las posiciones resueltas en: protected void paintComponent (Graphics g) { – Yawn

+0

y no puedo ver una forma de agregar un jlabel al jpanel en esa función – Yawn

+0

O mueve su ImageIcon, o configura un temporizador que llama repetidamente repintar, y averiguar dónde y qué marco dibujar en su método paintComponent. – aioobe