Come Inserire Elementi Grafici In Una Finestra Windows

2,649 views

Published on

come inserire elementi grafici in un frame java

  • Be the first to comment

  • Be the first to like this

Come Inserire Elementi Grafici In Una Finestra Windows

  1. 1. COME INSERIRE ELEMENTI GRAFICI IN UNA FINESTRA WINDOWS
  2. 2. FARE UN PANNELLO CON IL PROPRIO DISEGNO <ul><li>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. </li></ul><ul><li>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. </li></ul><ul><li>Quando questo pannello sarà mostrato, ci saranno le vostre immagini, anche le vostra animazioni. </li></ul>
  3. 3. COME SI COSTRUISCE UN PANNELLO <ul><li>Per costruire un pannello: </li></ul><ul><ul><li>Si crea una sottoclasse di JPanel </li></ul></ul><ul><ul><li>Si implementa il metodo paintComponent() </li></ul></ul>
  4. 4. IL METODO PAINTCOMPONENT() <ul><li>Tutto le istruzioni grafiche vanno nel corpo del metodo paintComponent() </li></ul><ul><li>Pensa a questo metodo come al metodo chiamato dal sistema per dire “ immagine è ora che ti ridisegni!”. </li></ul><ul><li>Se volete disegnare un cerchio, il metodo paintComponent() ha le istruzioni per disegnare un cerchio </li></ul><ul><li>Quando viene visualizzato il frame che contiene il vostro pannello, il metodo paintComponent() è chiamato e appare il vostro cerchio. </li></ul><ul><li>Ogniqualvolta il sistema pensa che il display necessiti di essere rinfrescato, chiamerà (eseguirà) il metodo paintComponent() </li></ul><ul><li>Mai chiamate questo metodo all’interno del vostro programma! </li></ul>
  5. 5. L’ARGOMENTO DI PAINTCOMPONENT(GRAPHICS G) <ul><li>Il parametro di input di questo metodo è un oggetto g della classe Graphics </li></ul><ul><li>Questo oggetto grafico è la tela dipinta che viene mostrata nel display del computer </li></ul><ul><li>Questa tela (canvas) è gestita dal sistema </li></ul><ul><li>Si può tuttavia chiedere al sistema di rinfrescare il dipinto con l’istruzione repaint() </li></ul><ul><li>Repaint() fa scattare un meccanismo per il quale alla fine il sistema chiama (esegue) il metodo paintComponent() </li></ul>
  6. 6. ESEMPIO DI PANNELLO
  7. 7. DISPLAY DI UNA IMMAGINE JPEG
  8. 8. DISPLAY DI UN CERCHIO COLORATO A CASO
  9. 9. DIETRO OGNI RIFERIMENTO A GRAPHICS C’È UN OGGETTO GRAPHICS2D <ul><li>Public void paintComponent(Graphics g){ } </li></ul><ul><li>Il parametro g è un oggetto Graphics. Ciò significa che può anche essere un oggetto di una sottoclasse di Graphics. E in effetti lo è! </li></ul><ul><li>L’oggetto puntato da g è un’istanza della classe Graphics2D </li></ul><ul><li>Che c’importa ? </li></ul><ul><li>Ci interessa perché ci sono cose che possiamo fare con un riferimento a Graphics2D e che invece non possiamo fare con Graphics. </li></ul>
  10. 10. IL COMPILATORE DECIDE QUALE METODO CHIAMARE <ul><li>Il compilatore decidi quale metodo eseguire sulla base del tipo di riferimento, non del tipo di oggetto effettivo puntato dal riferimento </li></ul><ul><li>Ad esempio Animale a=new Dog(); </li></ul><ul><li>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. </li></ul><ul><li>Tuttavia possiamo creare un riferimento di tipo Dog: Dog d=(Dog) a; e d.abbaia() è OK. </li></ul>
  11. 11. LA REGOLA DA SEGUIRE PER USARE UN METODO DELLA CLASSE GRAPHICS2D <ul><li>Se c’è bisogno di usare un metodo della classe Graphics2D, non si può usare direttamente il parametro ‘g’ di paintComponent(). </li></ul><ul><li>Si deve fare il casting del parametro ‘g’ con una nuova variabile Graphics2D </li></ul><ul><li>Graphics2D g2D=(Graphics2D) g; </li></ul>
  12. 12. I METODI DELLE CLASSI GRAPHICS E GRAPHICS2D
  13. 13. ESEMPIO <ul><li>Possiamo ottenere un evento ed ascoltarlo </li></ul><ul><li>Possiamo disegnare della grafica </li></ul><ul><li>Ma posssiamo disegnare della grafica quando otteniamo un evento ? </li></ul><ul><li>La risposta è SI ! </li></ul>
  14. 14. TESTO DELL’ESEMPIO <ul><li>Disegniamo un frame con un pannello avente un cerchio ed un bottone </li></ul><ul><li>Vogliamo che il cerchio cambi colore ogni volta che clicchiamo il bottone </li></ul><ul><li>Identifichiamo le fasi del lavoro </li></ul>
  15. 15. PRIMA FASE <ul><li>Il frame è disegnato con due oggetti: il pannello disegnato e il bottone. </li></ul><ul><li>Si crea un listener e lo si registra al bottone </li></ul><ul><li>Il frame viene visualizzato e si aspetta l’input dell’utente </li></ul>
  16. 16. SECONDA FASE <ul><li>L’utente clicca il bottone </li></ul><ul><li>Il bottone crea un evento e chiama il gestore che ascolta l’evento </li></ul>
  17. 17. TERZA FASE E QUARTA FASE <ul><li>3) il gestore dell’evento chiama il metodo repaint() del frame </li></ul><ul><li>Il sistema chiama paintComponent() per ridisegnare il pannello </li></ul><ul><li>4) ed ecco che un nuovo colore è dipinto sul pannello perché di nuovo è eseguito il metodo paintComponent() con un colore casuale </li></ul>
  18. 18. ESERCITAZIONE <ul><li>Fare il programma che implementa le fasi del lavoro precedentemente definite </li></ul><ul><li>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. </li></ul>
  19. 19. FINE DELLA TERZA PUNTATA

×