GUI e AWT 12/05/2003. z GUI. z GUI in Java: l AWT. z Esempi. z Principi alla base. z Da fare e da non fare. Stefano Mizzaro - GUI e AWT 2/37

Documenti analoghi
Riassunto. GUI in Java con l AWT 1. Cos è una GUI. Oggi: GUI in Java, l AWT. GUI in Java. Un esempio. Stefano Mizzaro 1

Riassunto. GUI in Java con l AWT 1. Oggi: GUI in Java, l AWT. Oggi. GUI in Java. Cos è una GUI. Stefano Mizzaro 1

Applet 21/05/2003. z Gli applet. z Eventi del mouse. z Choice. z Menu. Stefano Mizzaro - Applet 2/25. z Da sovrascrivere per creare i nostri applet

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

L Abstract Windowing Toolkit. Le GUI in Java. Il Frame. Cenni sull ereditarietà. Gianpaolo Cugola - Sistemi Informativi in Rete

GUI e java swing. Elmenti della GUI. Eventi e listener contenitori componenti layout manager. caratteristiche speciali

Riassunto. GUI in Java con l AWT 2

Corso sul linguaggio Java

Autovalutazione. OO in Java: classi astratte, interfacce, classi interne. Riassunto: cos è la OOP?

! GUI in Java: AWT. ! Concetti: ! Componenti. ! Eventi. ! Ascoltatori. ! (Layout) ! Documentazione. ! Libri, Fotocopie. !

Le basi della grafica in Java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni

Riassunto. GUI in Java con l AWT 2

Programmazione in rete e laboratorio

La nostra finestra dovrebbe essere come mostra la figura: Diamo innanzitutto un occhiata alle componenti principali di input/output:

Programmazione in rete e laboratorio

L interfaccia grafica con Java

I Layout Manager di java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni

Eventi e listener per i componenti grafici

Eventi di azione. // con interfaccia per eventi di azione

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016

Grafica ed eventi. Più movimento alle classi

Programmazione Java: Interfacce grafiche (GUI)

Paradigmi di programmazione (sperimentazioni)

Corso sul linguaggio Java

Principi di base della programmazione di interfacce grafiche in Java

L interfaccia grafica in Java

GRAFICA ED EVENTI SWING, AWT e JavaFX

Classi astratte. Master in Web Technology e Security luglio - settembre Interfacce

Unità B2 Gestione eventi 2

Programmazione in Java e gestione della grafica. Lezione 19

z Campionario di componenti z Per ogni componente: z Classi ausiliarie z Disegno z Ogni istanza rappresenta un colore z Vedi documentazione API

Java SE 6. Programmazione grafica (3)

Lezione n.12 LPR Informatica Applicata GUI programming

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

24 - Possibili approfondimenti

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo

Grafica in Java. introduzione

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

! Problemi, domande, risposte. ! Algoritmi che calcolano funzioni. ! Funzioni computabili e non. ! Problema = insieme di domande omogenee. !

Programmazione ad Oggetti. JFrame è la classe di base per le finestre Fornisce tutte le caratteristiche di una finestra vuota

18 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce

Oggi. La programmazione strutturata - III. Sequenza e selezione. Dove siamo. Iterazione: while e do/while. Raffinamenti successivi.

JFrame. Chiusura della finestra. JFrame - Esempio. Tipologia di GUI. Linee guida. Programmazione ad Oggetti 6/12/09. finestre

A. Ferrari. AWT e Swing. Java. Alberto Ferrari Informatica

Introduzione alla programmazione con linguaggio Java {Dott.ssa E. Calabresu, Dr. M. Carta, Ing. M. Ennas, Ing. S. Piras, Ing. F.

Linguaggi di Programmazione I Lezione 16

La nostra interfaccia avrà l aspetto seguente:

PROVA FINALE Ingegneria del software

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto

Laboratorio di Informatica. Il Sistema Operativo. Il Sistema Operativo 1

Inizializzare oggetti

Configurazione di una vs. Laboratorio di sistemi interattivi. Dal modello formale all implementazione

Programmazione in Java e gestione della grafica. Lezione 21

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1

Applet. Applet: il termine identifica piccole applicazioni da eseguirsi all interno di un browser.

Diagramma delle classi

Android. Android04: Gestione eventi.

Marco Faella Elementi di programmazione di interfacce Grafiche. Il pattern OBSERVER.

! Riassunto. ! for. ! Cicli annidati. ! Esempi, esercizi, errori tipici. ! Programmazione strutturata. ! break e continue I1; I2; I3;

GUI e java swing. Templates per GUI degli IDE. Gli IDE forniscono Template per generare interfacce grafiche.

maggio 2004 Stefano Sanna - gerda@crs4.it

La programmazione ad oggetti: chiamate di metodi. Overloading. This

Usare e costruire oggetti. Concetti Fondamentali. Interfaccia Pubblica di una. Application Program Interface

Java GUI. Swing Java

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Sistemi Mobili e Wireless Android Interfacce utente: Widget e Layout (2)

Corso sul linguaggio Java

Interfacce grafiche (GUI)

Interazioni col mondo: eventi

Application VS Applet

Concetti principali Ereditarietà e (overriding) di metodi. Ereditarietà e costruttori Livelli di accesso protected e package La classe Object

Programmazione Orientata agli Oggetti

Corso sul linguaggio Java

Corso sul linguaggio Java

Componenti di un sistema operativo

Gestione degli eventi in Java

Esempio 2: Subtyping

LEZIONE 5. CORSO BASE DI AutoCad. Corso Base di AutoCad. AutoCad. Ing. Lorenzo Procino

public void setbounds(int x,int y, int width,int height) lblgraffa1; txta1; lblx1; txtb1; lbly1; txtc1;

Definizione di classi. Walter Didimo

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Fondamenti di Informatica II 27. Laboratorio 8 Windows Forms

Come creare una presentazione di immagini con NavImm

Sistemi Mobili e Wireless Android Interfacce utente: Widget e Layout (1)

Corso sul linguaggio Java

Corso di Informatica

Programmazione Orientata agli Oggetti in Linguaggio Java

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo

Informatica di Base

Applicazioni grafiche e finestre

APPLICAZIONI & APPLET

Programmazione II. Lezione 18. Daniele Sgandurra 11/1/2011.

interfacce ed eventi intercettare il mouse ed altri eventi

Transcript:

Scaletta *8,H$:7 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/~mizzaro mizzaro@dimi.uniud.it 12 maggio 2003 z GUI z GUI in Java: l AWT z Esempi z Principi alla base Componenti, eventi, gestori eventi (ascoltatori) Classi interne Layout z Da fare e da non fare Stefano Mizzaro - GUI e AWT 2/37 Cos è una GUI z Graphical User Interface z Interazione utente-programma basata su Linea di comando (shell Unix) z Solo testo, tastiera, cursore GUI (Mozilla, MSWord, XEmacs, ) z Grafica, finestre, pulsanti, puntatore/mouse, menu z Finora solo linea di comando z Come si fanno le GUI in Java? Stefano Mizzaro - GUI e AWT 3/37 z 7XWWRqXQRJJHWWR GUI in Java Finestre, pulsanti, (componenti) Azioni dell utente! (eventi) Gestori degli eventi z AWT (Abstract Window Toolkit): classi predefinite (java.awt.*, java.awt.event.*, ) z AWT: GUI indipendenti dalla piattaforma (lo stesso codice funziona su varie piattaforme HW/SW) Stefano Mizzaro - GUI e AWT 4/37 Un esempio (1/2) z La nostra prima GUI: una finestra vuota che non fa nulla VXSHULQXWLOHVXSHU*8, VHW%RXQGV'LPHQVLRQL VHW7LWOH*8,7LWRORILQHVWUD VHW9LVLEOHWUXH5HQGHYLVLELOH Stefano Mizzaro - GUI e AWT 5/37 z Classe di prova z Proviamo! Un esempio (2/2) SXEOLFFODVV3URYD*8,^ *8,ILQHVWUD3ULQFLSDOH QHZ*8, 6\VWHPRXWSULQWOQ)LQH Stefano Mizzaro - GUI e AWT 6/37 Stefano Mizzaro 1

Come funziona? Le classi usate z In GUI1 c è solo il costruttore z che viene chiamato nel main z e, usando opportunamente i metodi delle sopraclassi, crea la finestra z Notate che Fine viene visualizzato subito z Cosa c è in Frame e nelle superclassi? Stefano Mizzaro - GUI e AWT 7/37 Stefano Mizzaro - GUI e AWT 8/37 Gestione eventi z Così com è non fa nulla! z Ci sono solo componenti, non gestori di eventi z Modifichiamo la nostra GUI per gestire un evento (chiusura finestra) z Click su X evento che codice eseguire? z Invocazioni implicite: il programmatore scrive il metodo, non la chiamata mette il metodo è in un oggetto (ascoltatore) associa l oggetto all azione Stefano Mizzaro - GUI e AWT 9/37 Ascoltatore (1/3) SXEOLFFODVV*8, H[WHQGV)UDPH ^ SXEOLF*8, ^ $VFROWDWRUHDVF QHZ$VFROWDWRUH VHW%RXQGV VHW7LWOH*8, VHW9LVLEOHWUXH DGG:LQGRZ/LVWHQHUDVF$JJLXQJH ODVFROWDWRUH Stefano Mizzaro - GUI e AWT WKLVDGG:LQGRZ/LVWHQHUDVF 10/37 HYHQW Ascoltatore (2/3) Ascoltatore (3/3) SXEOLFFODVV$VFROWDWRUHH[WHQGV:LQGRZ$GDSWHU ^ SXEOLFYRLGZLQGRZ&ORVHG :LQGRZ(YHQW H^ SXEOLFFODVV3URYD*8, ^ *8, ILQHVWUD3ULQFLSDOH QHZ*8, 6\VWHPRXWSULQWOQ)LQH SXEOLFYRLGZLQGRZ&ORVLQJ :LQGRZ(YHQW H^ HJHW:LQGRZGLVSRVH Stefano Mizzaro - GUI e AWT 11/37 z (quasi nessuna modifica) Stefano Mizzaro - GUI e AWT 12/37 Stefano Mizzaro 2

Meccanismo di gestione eventi z Azione utente z Creazione dell istanza dell evento opportuno (sottoclasse di AWTEvent) z Invocazione (automatica) dei metodi dell ascoltatore (un istanza di EventListener) L ascoltatore deve essersi registrato in precedenza per quegli eventi (addwindowlistener) L istanza-evento viene passata come argomento al metodo invocato automaticamente Stefano Mizzaro - GUI e AWT 13/37 Ascoltatori e adattatori Stefano Mizzaro - GUI e AWT 14/37 Gerarchia degli eventi Stefano Mizzaro - GUI e AWT 15/37 Tutto è un oggetto! z 3 istanze: La GUI (Frame) L evento generato dal click del mouse sul pulsante di chiusura finestra (WindowEvent) L ascoltatore con il codice eseguito per gestire l evento (WindowListener) z Facciamo un diagramma unico! z (4a istanza: il gestore della posizione degli oggetti che potrebbero esserci nella finestra) Stefano Mizzaro - GUI e AWT 16/37 Senza l adattatore HYHQW SXEOLFFODVV$VFROWDWRUHLPSOHPHQWV:LQGRZ/LVWHQHU ^ SXEOLFYRLGZLQGRZ2SHQHG:LQGRZ(YHQW H^ SXEOLFYRLGZLQGRZ,FRQLILHG:LQGRZ(YHQW H^ SXEOLFYRLGZLQGRZ'HLFRQLILHG:LQGRZ(YHQW H^ SXEOLFYRLGZLQGRZ$FWLYDWHG:LQGRZ(YHQW H^ SXEOLFYRLGZLQGRZ'HDFWLYDWHG:LQGRZ(YHQW H^ SXEOLFYRLGZLQGRZ&ORVHG :LQGRZ(YHQW H^ SXEOLFYRLGZLQGRZ&ORVLQJ :LQGRZ(YHQW H^ HJHW:LQGRZGLVSRVH Stefano Mizzaro - GUI e AWT 17/37 Ascoltatori e classi interne z Meglio estendere un Adapter che implementare un Listener z Però c è eredità singola z e poi è scomodo creare tante classi z e poi come accedo alle variabili z Soluzione: classi interne per gli ascoltatori Membro ( dentro la classe ) (usate questa!) Locali ( dentro un metodo ) Anonime ( dentro un metodo e senza nome ) Stefano Mizzaro - GUI e AWT 18/37 Stefano Mizzaro 3

Ascoltatore e classe membro HYHQW FODVV$VFROWDWRUHH[WHQGV:LQGRZ$GDSWHU^ Ascoltatore e classe locale HYHQW FODVV$VFROWDWRUHH[WHQGV:LQGRZ$GDSWHU^ Stefano Mizzaro - GUI e AWT 19/37 Stefano Mizzaro - GUI e AWT 20/37 Ascoltatore e classe anonima HYHQW :LQGRZ$GDSWHU DVF QHZ:LQGRZ$GDSWHU^ DGG:LQGRZ/LVWHQHUQHZ:LQGRZ$GDSWHU^ Stefano Mizzaro - GUI e AWT 21/37 Aggiungiamo qualcosa z Ok, ora l interfaccia fa qualcosa, ma è vuota z Aggiungiamo: un etichetta (Label) un pulsante (Button) add, definito in Component Stefano Mizzaro - GUI e AWT 22/37 Etichetta e pulsante (1/5) FODVV*8, H[WHQGV)UDPH ^ SXEOLF*8, ^ $VFROWDWRUHDVF QHZ$VFROWDWRUH VHW%RXQGV VHW7LWOH*8, WKLVDGG1RUWKQHZ/DEHO3UHPLLOSXOVDQWH %XWWRQ E QHZ%XWWRQ3UHPLPL 3DQHOS QHZ3DQHO SDGGE WKLVDGG6RXWKS WKLVDGG:LQGRZ/LVWHQHUDVF VHW9LVLEOHWUXH Stefano Mizzaro - GUI e AWT 23/37 Etichetta e pulsante (2/5) SXEOLFFODVV3URYD*8, ^ *8, ILQHVWUD3ULQFLSDOH QHZ*8, z Eh, il pulsante non fa nulla z perché manca l ascoltatore! z Click su pulsante ActionEvent Stefano Mizzaro - GUI e AWT 24/37 Stefano Mizzaro 4

Etichetta e pulsante (3/5) HYHQW FODVV$VFROWDWRUH3XOVDQWHLPSOHPHQWV$FWLRQ/LVWHQHU ^ 6\VWHPRXWSULQWOQ+DLSUHPXWRLOSXOVDQWH Stefano Mizzaro - GUI e AWT 25/37 Etichetta e pulsante (4/5) FODVV*8, H[WHQGV)UDPH ^ SXEOLF*8, ^ $VFROWDWRUHDVF QHZ$VFROWDWRUH $VFROWDWRUH3XOVDQWHDS QHZ$VFROWDWRUH3XOVDQWH VHW%RXQGV VHW7LWOH*8, WKLVDGG1RUWKQHZ/DEHO3UHPLLOSXOVDQWH %XWWRQ E QHZ%XWWRQ3UHPLPL 3DQHOS QHZ3DQHO SDGGE WKLVDGG6RXWKS WKLVDGG:LQGRZ/LVWHQHUDVF EDGG$FWLRQ/LVWHQHUDS VHW9LVLEOHWUXH Stefano Mizzaro - GUI e AWT 26/37 Etichetta e pulsante (5/5) SXEOLFFODVV3URYD*8, ^ *8, ILQHVWUD3ULQFLSDOH QHZ*8, Layout z Come disporre gli oggetti dentro un Container ( contenitore ) z LayoutManager: gestore di layout z Ogni sottoclasse di Container ha associata un istanza di LayoutManager z Ogni sottoclasse di Container ha un gestore di layout GLGHIDXOW (BorderLayout per Frame) Stefano Mizzaro - GUI e AWT 27/37 Stefano Mizzaro - GUI e AWT 28/37 Da fare e da non fare z Finestra con due bottoni z Classe MyFrame che Estende Frame Implementa uno o più listener z Si può fare in due modi Male Bene Stefano Mizzaro - GUI e AWT 29/37 MalFatto.java (1/3) HYHQW SXEOLFFODVV0DO)DWWRH[WHQGV)UDPH LPSOHPHQWV$FWLRQ/LVWHQHU:LQGRZ/LVWHQHU ^ %XWWRQ E QHZ%XWWRQ3XOVDQWH E QHZ%XWWRQ3XOVDQWH SXEOLF0DO)DWWR^ DGGEDGGE EDGG$FWLRQ/LVWHQHUWKLV EDGG$FWLRQ/LVWHQHUWKLV DGG:LQGRZ/LVWHQHUWKLV Stefano Mizzaro - GUI e AWT 30/37 Stefano Mizzaro 5

MalFatto.java (2/3) 2EMHFWVRXUFH HJHW6RXUFH LI VRXUFH E HOVHLI VRXUFH E HOVH 6\VWHPRXWSULQWOQ4XDOFRVDOWUR Stefano Mizzaro - GUI e AWT 31/37 MalFatto.java (3/3) SXEOLFYRLGZLQGRZ&ORVLQJ:LQGRZ(YHQW H^ 6\VWHPRXWSULQWOQ:LQGRZ&ORVLQJ SXEOLFYRLGZLQGRZ&ORVHG:LQGRZ(YHQW H^ SXEOLFYRLGZLQGRZ'HLFRQLILHG:LQGRZ(YHQW H^ SXEOLFYRLGZLQGRZ,FRQLILHG:LQGRZ(YHQW H^ SXEOLFYRLGZLQGRZ$FWLYDWHG:LQGRZ(YHQW H^ SXEOLFYRLGZLQGRZ'HDFWLYDWHG:LQGRZ(YHQW H^ SXEOLFYRLGZLQGRZ2SHQHG:LQGRZ(YHQW H^ SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^ )UDPH ILQHVWUD QHZ0DO)DWWR Stefano Mizzaro - GUI e AWT 32/37 Perché è fatto male z Classe che fa 2 cose Costruisce la GUI Gestisce gli eventi z Tanti metodi vuoti inutili z Catene di if/else z N.B. Purtroppo molti libri usano questa tecnica / Stefano Mizzaro - GUI e AWT 33/37 BenFatto.java (1/2) HYHQW SXEOLFFODVV%HQ)DWWRH[WHQGV)UDPH ^ SXEOLF%HQ)DWWR^ %XWWRQ E QHZ%XWWRQ3XOVDQWH E QHZ%XWWRQ3XOVDQWH DGGEDGGE EDGG$FWLRQ/LVWHQHUQHZ$VFROWDWRUH3XOVDQWH EDGG$FWLRQ/LVWHQHUQHZ$VFROWDWRUH3XOVDQWH DGG:LQGRZ/LVWHQHUQHZ:LQGRZ$GDSWHU^ SXEOLFYRLGZLQGRZ&ORVLQJ:LQGRZ(YHQW H^ 6\VWHPRXWSULQWOQ:LQGRZ&ORVLQJ Stefano Mizzaro - GUI e AWT 34/37 BenFatto.java (2/2) SXEOLFFODVV$VFROWDWRUH3XOVDQWH LPSOHPHQWV$FWLRQ/LVWHQHU ^ SXEOLFFODVV$VFROWDWRUH3XOVDQWH LPSOHPHQWV$FWLRQ/LVWHQHU ^ SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^ )UDPH ILQHVWUD QHZ%HQ)DWWR Stefano Mizzaro - GUI e AWT 35/37 Perché è fatto bene z Ascoltatori con classi interne z Evito codice inutile z Ogni classe fa un unica cosa z Evito catene di if/else, uso l eredità z 8QDFODVVHXQDUHVSRQVDELOLWj Stefano Mizzaro - GUI e AWT 36/37 Stefano Mizzaro 6

z GUI z GUI in Java: l AWT z Esempi z Principi alla base Riassunto Componenti, eventi, gestori eventi (ascoltatori) Classi interne Layout e layout manager z Da fare e da non fare Stefano Mizzaro - GUI e AWT 37/37 Stefano Mizzaro 7