phi ha scritto:
come "inserire" una GIF, cioè quale "oggetto" usare, visto che sia con Image non riesco.
Dipende cosa hai caricato e con quale API.
- un java.awt.Image dal Toolkit di AWT
- un java.awt.image.BufferedImage dalla API ImageIO (javax.imageio.ImageIO)
- un Icon (di norma un javax.swing.ImageIcon)
Il punto è che il Toolkit di AWT (e anche ImageIcon che sfrutta internamente il Toolkit) carica la immagine in modo "asincrono", quindi NON è tutta disponibile subito. Pertanto quando si fa il g.drawImage( ..... ) si DEVE specificare un ImageObserver
es. (ma vale anche per gli altri overload):
drawImage(Image img, int x, int y,
ImageObserver observer)
Ovvero si deve passare come observer lo stesso componente su cui si sta disegnando. Quindi nella classe che estende JPanel:
g.drawImage( ..... ,
this);
BufferedImage invece è una immagine completamente in memoria e viene caricata dalla ImageIO in modo sincrono.