NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Java 2D - 17: disegno di base: caricare e mostrare le immagini

Guida Java 2D, corso di base 

 

Per inserire delle immagini in un pannello (o in altre componenti) è necessario:

  • 'caricare' un'immagine da file o da un URL, ossia istanziare un oggetto Image che conterrà i dati prelevati dal file;
  • visualizzare l'Image.

 

Per effettuare il primo passo utilizzeremo la classe Toolkit (lett.: 'cassetta degli attrezzi'), appartenente al package AWT, che mette a disposizione, tra gli altri, i seguenti metodi:

  • getImage(String filename)   :   Image
  • getImage(URL url)   :   Image

che permettono, come è facilmente intuibile, di creare degli oggetti Image a partire da file, memorizzati sul disco o ad un determinato URL.

 

 

 

Durante questa fase, comunque, è consigliabile avvalersi di un particolare oggetto, un MediaTracker, per 'attendere il caricamento' dell'immagine (l'operazione di caricamento richiede tempo ed il programma potrebbe continuare il flusso dell'esecuzione senza visualizzare l'immagine; con un MediaTracker, impediamo che questo avvenga).

 

Tutto quello che dovremo fare sarà istanziare un MediaTracker aggiungendo, alla lista di 'oggetti media' per i quali bisogna attendere il caricamento, la nostra Image (eventualmente anche più di una, in cascata).

 

Più in avanti, in questo stesso capitolo verrà mostrato un esempio di codice di caricamento e visualizzazione a video di un'immagine da file, comprendente le fasi di attesa implementante mediante MediaTracker appena descritte.

 

Ottenuto un oggetto Image, possiamo mostrarlo a video utilizzando il metodo di Graphics :

  • drawImage(Image img, int x, int y, ImageObserver observer);

all'interno di paintComponent.

 

Graphics mette a disposizione anche un altro metodo per disegnare le immagini, simile a quello appena mostrato ma che permette di ridimensionare l'immagine in fase di disegno per farle assumere larghezza width ed altezza height:

  • drawImage(Image img, int x, int y, int width, int height, ImageObserver observer); .

 

Ecco un esempio di istanziazione di un Image e di relativa visualizzazione dell'immagine (la classe qui definita è un pannello, dunque occorrerà definire un main e un Frame in una o più classi aggiuntive per realizzare un esempio completo e funzionante):

class PannelloConImmagine extends JPanel
{
private Image miaImmagine;

public PannelloConImmagine()
{
miaImmagine = Toolkit.getDefaultToolkit().getImage("immagine.gif");

// Attendo il caricamento dell'immagine (il MediaTracker introduce un 'ritardo', in attesa che gli oggetti ad esso associati vengano caricati)
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(miaImmagine, 0);
try
{
tracker.waitForID(0);
}
catch (InterruptedException e)
{
}
}

public void paintComponent(Graphics g)
{
super.paintComponent(g);

//Disegno l'immagine, in questo caso con le dimensioni proprie della stessa, senza ridimensionarla.
g.drawImage(miaImmagine,20,20,this);
}
}

 

Come potete notare, è possibile - ed anzi è consigliabile - istanziare l'oggetto Image al di fuori di paintComponent, in modo da non dover accedere al file system ad ogni evento della GUI per dover ricreare l'Image, che - anche se ridisegnato - resta comunque sostanzialmente immutato.

 

 

Per un elenco completo (lista) dei tutorial e videotutorial su Java, Java 2D, Java 3D e J2ME, clicca qui


 
Libri e eBook sul linguaggio di programmazione Java:
 
 
ebook PDF "Java 3D: guida di base" di Francesco Milanese
 
 
 
 
 

 

Pagina di Francesco Milanese (redbaron85) su Facebook   Pagina di Francesco Milanese (redbaron85) su Google Plus   Profilo di Francesco Milanese (redbaron85) su LinkedIn   Pagina di Francesco Milanese (redbaron85) su Twitter   Canale Youtube di Francesco Milanese (redbaron85ct)

Vai all'inizio della pagina