Come Inserire Elementi Grafici In Una Finestra Windows

Post on 26-May-2015

2.422 views 1 download

description

come inserire elementi grafici in un frame java

Transcript of Come Inserire Elementi Grafici In Una Finestra Windows

COME INSERIRE ELEMENTI GRAFICI IN UNA FINESTRA WINDOWS

FARE UN PANNELLO CON IL PROPRIO DISEGNO

Per disegnare la propria grafica e metterla nello schermo del computer in una finestra windows (un frame), la migliore scelta è quella di realizzare un pannello con i nostri disegni.

Poi si aggiunge questo pannello al frame, allo stesso modo con cui ci si può aggiungere un bottone, una etichetta (label) o una casella di testo.

Quando questo pannello sarà mostrato, ci saranno le vostre immagini, anche le vostra animazioni.

COME SI COSTRUISCE UN PANNELLO

Per costruire un pannello: Si crea una sottoclasse di

JPanel Si implementa il metodo

paintComponent()

IL METODO PAINTCOMPONENT()

Tutto le istruzioni grafiche vanno nel corpo del metodo paintComponent()

Pensa a questo metodo come al metodo chiamato dal sistema per dire “ immagine è ora che ti ridisegni!”.

Se volete disegnare un cerchio, il metodo paintComponent() ha le istruzioni per disegnare un cerchio

Quando viene visualizzato il frame che contiene il vostro pannello, il metodo paintComponent() è chiamato e appare il vostro cerchio.

Ogniqualvolta il sistema pensa che il display necessiti di essere rinfrescato, chiamerà (eseguirà) il metodo paintComponent()

Mai chiamate questo metodo all’interno del vostro programma!

L’ARGOMENTO DI PAINTCOMPONENT(GRAPHICS G)

Il parametro di input di questo metodo è un oggetto g della classe Graphics

Questo oggetto grafico è la tela dipinta che viene mostrata nel display del computer

Questa tela (canvas) è gestita dal sistema

Si può tuttavia chiedere al sistema di rinfrescare il dipinto con l’istruzione repaint()

Repaint() fa scattare un meccanismo per il quale alla fine il sistema chiama (esegue) il metodo paintComponent()

ESEMPIO DI PANNELLO

DISPLAY DI UNA IMMAGINE JPEG

DISPLAY DI UN CERCHIO COLORATO A

CASO

DIETRO OGNI RIFERIMENTO A GRAPHICS C’È UN OGGETTO

GRAPHICS2D

Public void paintComponent(Graphics g){ }

Il parametro g è un oggetto Graphics. Ciò significa che può anche essere un oggetto di una sottoclasse di Graphics. E in effetti lo è!

L’oggetto puntato da g è un’istanza della classe Graphics2D

Che c’importa ?

Ci interessa perché ci sono cose che possiamo fare con un riferimento a Graphics2D e che invece non possiamo fare con Graphics.

IL COMPILATORE DECIDE QUALE

METODO CHIAMARE

Il compilatore decidi quale metodo eseguire sulla base del tipo di riferimento, non del tipo di oggetto effettivo puntato dal riferimento

Ad esempio Animale a=new Dog();

Non si può dire a.abbaia(); anche se sappiamo che a è un Dog. Il compilatore guarda a, vede che è un tipo Animale e trova che non esiste il metodo abbaia() in Animale.

Tuttavia possiamo creare un riferimento di tipo Dog: Dog d=(Dog) a; e d.abbaia() è OK.

LA REGOLA DA SEGUIRE PER USARE UN METODO DELLA

CLASSE GRAPHICS2D

Se c’è bisogno di usare un metodo della classe Graphics2D, non si può usare direttamente il parametro ‘g’ di paintComponent().

Si deve fare il casting del parametro ‘g’ con una nuova variabile Graphics2D

Graphics2D g2D=(Graphics2D) g;

I METODI DELLE CLASSI GRAPHICS E

GRAPHICS2D

ESEMPIO

Possiamo ottenere un evento ed ascoltarlo

Possiamo disegnare della grafica

Ma posssiamo disegnare della grafica quando otteniamo un evento ?

La risposta è SI !

TESTO DELL’ESEMPIO

Disegniamo un frame con un pannello avente un cerchio ed un bottone

Vogliamo che il cerchio cambi colore ogni volta che clicchiamo il bottone

Identifichiamo le fasi del lavoro

PRIMA FASE

Il frame è disegnato con due oggetti: il pannello disegnato e il bottone.

Si crea un listener e lo si registra al bottone

Il frame viene visualizzato e si aspetta l’input dell’utente

SECONDA FASE

L’utente clicca il bottone

Il bottone crea un evento e chiama il gestore che ascolta l’evento

TERZA FASE E QUARTA FASE

3) il gestore dell’evento chiama il metodo repaint() del frame

Il sistema chiama paintComponent() per ridisegnare il pannello

4) ed ecco che un nuovo colore è dipinto sul pannello perché di nuovo è eseguito il metodo paintComponent() con un colore casuale

ESERCITAZIONE

Fare il programma che implementa le fasi del lavoro precedentemente definite

Fare un secondo programma che modifica il precedente programma nel seguente modo: si crea un secondo bottone. Il secondo bottone deve servire per colorare il pannello di rosso.

FINE DELLA TERZA PUNTATA