Gestione degli eventi in Java



Documenti analoghi
Corso sul linguaggio Java

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

L interfaccia grafica in Java

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

Gestione dell interattività: gli eventi

L interfaccia grafica con Java

Interazioni col mondo: eventi

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

interfacce ed eventi intercettare il mouse ed altri eventi

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A

Java Interfaccia Grafica

Esercitazione n 6. Capacità di analisi e di estensione di progetti Componenti grafici e gestione di eventi Linguaggio Java:

Laboratorio di IUM. Lezione 3. La gestione degli eventi. Di Blasi Gianpiero - D.M.I. - Università di Catania

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

Esercitazione sui Design Pattern

! Programmazione strutturata. ! OO: TDA, scambio messaggi, eredità, polimorfismo, OO in Java. ! Rassegna API. ! Documentazione Javadoc delle API

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

8. GUI : Graphics User Interface

Ereditarietà e classi astratte

ESERCITAZIONI SU Java

Eventi e listener per i componenti grafici

Corso Eclipse. Prerequisiti. 3 Window Builder

Sviluppo di Interfacce Grafiche in Java

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Gestione di eventi ed interfacce utente grafiche

Grafico della parabola

Introduzione (Swing vs AWT)

Sviluppo di Interfacce Grafiche in Java. Concetti di Base ed Esempi.

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Introduzione al package grafico Swing

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

maggio 2004 Stefano Sanna - gerda@crs4.it

Finestra.java. static String nomicolonne[] = {"ind.","cognome","nome","telefono"," "}; //nomi delle colonne della tabella

Alessandro De Luca. Lezione, 13 maggio 2015

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

LPR 2005/ 2006 Lezione n.9. Elementi di grafica per lo svolgimento del progetto Double Buffering Caricamento delle immagini Gestione degli eventi

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

AWT: Abstract Window Toolkit

CdL in Medicina Veterinaria - STPA AA

Modulo 4: Ereditarietà, interfacce e clonazione

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

Catalogo Elettronico Lancia, Fiat e Alfa Romeo

INDICE. Proposta aggiornamento Aggiungi scritta 2. Proposta aggiornamento Sposta scritta 3. Proposta aggiornamento Ruota scritta 4

Introduzione all uso di Eclipse

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

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

FINE ANNO BOLLE / FATTURE PER E/SATTO

Versione 7.0 Taglie e Colori. Negozio Facile

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

FH-SY capitolo Versione 3 - FH-SY.NET - FAQ -

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Tale attività non è descritta in questa dispensa

Identificare le classi in un sistema

Registratori di Cassa

Amministrazione classi

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

INSTALLAZIONE NUOVO CLIENT SUITE IPSOA (04 Novembre 2014)

Windows. Cos è I componenti principali Le funzioni essenziali. 1

ISTRUZIONI OPERATIVE PER L INOLTRO DELLE PRATICHE ON-LINE NUOVA PRATICA

Database 1 biblioteca universitaria. Testo del quesito

Programmazione a Oggetti Lezione 10. Ereditarieta

PROMOZIONI ISTRUZIONI DI UTILIZZO

Esercitazione n 4. Obiettivi

Scope e visibilità per classi

POSTA ELETTRONICA Per ricevere ed inviare posta occorrono:

FPf per Windows 3.1. Guida all uso

Esercizio data base "Biblioteca"

CONTROLLO DI GESTIONE DELLO STUDIO

Guida all uso di Java Diagrammi ER

Progettazione e Sviluppo di Interfacce Grafiche con Java Swing

Stampa unione - prof. Enzo Mardegan - 2

EasyPrint v4.15. Gadget e calendari. Manuale Utente

UML Diagrammi delle classi. UML Diagramma classi 1

Programmazione in rete e laboratorio

STAMPA UNIONE DI WORD

Aggiornamento SIDA GESTIONE AGENDA GUIDE. dal giorno 24 febbraio 2015 diventa operativo il nuovo sistema di prenotazione delle guide obbligatorie.

SOMMARIO... 3 INTRODUZIONE...

Parola chiave extends

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

Programmazione Java: Interfacce grafiche (GUI)

CREARE UN MODULO CON EXCEL

Java Interfaccia Grafica

Transcript:

Gestione degli eventi in Java package java.awt.event.* Il modello degli eventi I componenti dell awt generano eventi in seguito alle azioni dell utente movimento del mouse click pressione di un tasto etc. Gli eventi vengono passati ad una lista di ascoltatori associata al componente 1

Ascoltatori (Listener) Al momento della creazione di un nuovo componente awt, questi ha la lista degli ascoltatori associati vuota Dopo che si sono aggiunti degli ascoltatori alla lista del componente, ogni volta che viene generato un evento, viene passato agli ascoltatori che, eventualmente, eseguiranno del codice È come se il componente fosse un uomo che in seguito ad un incendio (=evento) grida al fuoco (=lancia un evento) e poi non fa nulla, mentre il vigile del fuoco in ascolto (=ascoltatore) spegne l incendio Ascoltatori 2 Ad un componente si possono associare più ascoltatori per lo stesso evento (=ci possono essere più vigili del fuoco pronti a rispondere) ed anche ascoltatori per eventi diversi (=posso associare un vigile per gli incendi ed un poliziotto per i furti) Un ascoltatore può essere associato a più componenti contemporaneamente (=un vigile del fuoco risponde alle chiamate di più persone) 2

Gerarchia di classi java.awt.event.* Come si chiudono le finestre import java.awt.*; import java.awt.event.*; class finestra { Frame f = new Frame( titolo ); f.setbounds(20,20,200,150); f.addwindowlistener(new ascoltatore()); 3

class ascoltatore implements WindowListener { public void windowclosing(windowevent e) { e.getwindow().dispose(); public void windowclosed(windowevent e) { System.exit(0); public void windowopened(windowevent e) { public void windowiconified(windowevent e) { public void windowdeiconified(windowevent e) { public void windowactivated(windowevent e) { public void windowdeactivated(windowevent e) { Come si chiudono le finestre 2 addwindowlistener(windowlistener l) è il metodo della classe Window per aggiungere un ascoltatore degli eventi relativi alle finestre windowclosing viene eseguito quando si fa click sul bottone in alto a destra della finestra e.getwindow() restituisce la finestra che ha generato l evento dispose() chiude la finestra windowclosed viene eseguito quando la finestra è chiusa 4

Ascoltatori vs. Adattatori Se si vuole scrivere una classe che gestisce un tipo di evento awt, dobbiamo farle implementare l interfaccia dell opportuno Listener quindi dobbiamo scrivere una classe che implementi TUTTI i metodi dell interfaccia In alcuni casi abbiamo a disposizione delle classi astratte (adattatori) che implementano già tutti i metodi Ascoltatori vs. Adattatori 2 Invece di scrivere una classe ed implementare tutti i metodi dell interfaccia possiamo ereditare i metodi da un adattatore (estendendo la classe) e poi sovrascrivere solo quello che ci interessa CONTRO: in java non c è ereditarietà multipla, quindi se una classe vuole gestire diversi tipi di eventi non si può farle ereditare i metodi da diversi adattatori. In quel caso occorre implementare le interfacce 5

Chiudere le finestre con adattatore import java.awt.*; import java.awt.event.*; class finestra2 { Frame f = new Frame( titolo ); f.setbounds(20,20,200,150); f.addwindowlistener(new adattatore()); class adattatore extends WindowAdapter { public void windowclosing(windowevent e) { e.getwindow().dispose(); public void windowclosed(windowevent e) { System.exit(0); Azioni e ascoltatori di azioni import java.awt.*; import java.awt.event.*; class finestra3 { Frame f = new Frame( titolo ); Panel p = new Panel(); Button b = new Button( chiudi ); b.addactionlistener(new terminatore(f)); f.add(p); p.add(b); f.setbounds(20,20,200,150); 6

Azioni e ascoltatori di azioni 2 class terminatore implements ActionListener { Frame fin; terminatore(frame fin) { this.fin = fin; public void actionperformed(actionevent e) { fin.dispose(); System.exit(0); Azioni e ascoltatori di azioni 3 addactionlistener(actionlistener l) è il metodo delle classi Button, List, MenuItem e TextField per aggiungere un ascoltatore di eventi L interfaccia ActionListener contiene il solo metodo actionperformed e quindi non esiste un adattatore 7

Eventi del mouse import java.awt.*; import java.awt.event.*; class finestra4 { Frame f = new Frame( titolo ); Panel p = new Panel(); Button b = new Button( ciao ); b.addmouselistener(new ascoltatopo()); f.add(p); p.add(b); f.setbounds(20,20,200,150); Eventi del mouse 2 class ascoltatopo implements MouseListener { public void mouseclicked(mouseevent e) { System.out.println( click ); public void mousepressed(mouseevent e) { System.out.println( premuto ); public void mousereleased(mouseevent e) { System.out.println( lasciato ); public void mouseentered(mouseevent e) { System.out.println( sopra ); public void mouseexited(mouseevent e) { System.out.println( fuori ); 8

Eventi del mouse 3 addmouselistener(mouselistener l) è un metodo di Component (e quindi di tutte le sue sottoclassi) Esiste un adattatore MouseAdapter Eventi per il testo import java.awt.*; import java.awt.event.*; class finestra5 { Frame f = new Frame("titolo"); Panel p = new Panel(); TextField t = new TextField(20); t.addtextlistener(new ascoltatesto()); f.add(p); p.add(t); f.setbounds(20,20,200,150); 9

Eventi per il testo 2 class ascoltatesto implements TextListener { public void textvaluechanged(textevent e) { System.out.print("cambiato! in "); TextComponent txt = (TextComponent)e.getSource(); System.out.println(txt.getText()); Eventi per il testo 3 addtextlistener(textlistener l) è un metodo di TextComponent (e quindi di tutte le sue sottoclassi) Non esiste un adattatore (infatti l interfaccia contiene un solo metodo) getsource() restituisce l Object che ha generato l evento. Per poter chiamare i metodi della classe TextComponent, (gettext()) occorre prima fare un cast 10

Selezionare elementi import java.awt.*; import java.awt.event.*; class finestra6 { Frame f = new Frame("titolo"); Panel p = new Panel(); Choice l = new Choice(); l.add("html 4.0"); l.add("xhtml 1.0"); l.add("css 1"); l.add("css 2"); l.add("xhtml 1.1"); l.add("html 4.01"); l.additemlistener(new ascselezione()); f.add(p); p.add(l); f.setbounds(20,20,200,150); class ascselezione implements ItemListener { public void itemstatechanged(itemevent e) { System.out.println("Selezionato "+e.getitem()); Selezionare elementi 2 additemlistener(itemlistener l) è un metodo delle classi Choice e List Non esiste un adattatore (infatti l interfaccia contiene un solo metodo) getitem() restituisce l Object che è stato interessato dall evento (non restituisce l oggetto che ha generato l evento che è la lista, ma l elemento) 11