GUI Graphical Users Interfaces

Slides:



Advertisements
Presentazioni simili
Java e le interfacce grafiche
Advertisements

Unit à E4 Applet. Obiettivi Saper progettare e realizzare Applet Java allinterno di pagine HTML Comprendere le interazioni tra il browser e lapplet Saper.
Applet Java.
Informatica Recupero debito quarto anno Terzo incontro.
Unit à E3 Eventi. Obiettivi Conoscere il concetto di evento e gestore di evento Conoscere i pulsanti in Swing e la gestione dellevento clic Saper gestire.
PHP.
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
CONOSCIAMO IL WINDOWS '95.
Il linguaggio java Esercitazioni del corso di Sistemi Informativi
Fondamenti di Informatica Prof. Cantone
DATAWAREHOUSE - Microstrategy
STRUMENTI DI PRESENTAZIONE
Modulo o Form in Html.
Programmazione ad Eventi
JavaScript Laboratorio di Applicazioni Informatiche II mod. A.
Grafica Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA Uff
Swing e la programmazione a eventi
Swing e la programmazione a eventi
LABORATORIO SINCRONO TUTORIAL LABORATORIO SINCRONO.
Introduzione a JFC/Swing
1 Eventi/2 Più movimento alle classi. 2 Eventi Java Modo per intercettare il verificarsi di certe condizioni / azioni e fare in modo che venga eseguito.
1 Grafica ed eventi/2 Più movimento alle classi. 2 Esercizio n.1 Realizzare una applicazione che permette il trascinamento di una ellissi allinterno di.
Più movimento alle classi
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 81 Gestione dei colori La gestione dei colori in AWT consente di specificare un qualunque.
Gestione dei Progetti Software 2 (a.a. 204/05) - Lezione 4 1 Il package java.awt Gestione dellI/O orientato alla grafica: le finestre Sviluppo di interfacce.
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 91 Il modello OAI (Object-Action Interface) Sintassi e semantica: la sintassi specifica.
AA2003/04 © M.A. Alberti Programmazione Interfacce 1 Programmazione Corso di laurea in Informatica.
Windows Sistema operativo con interfaccia grafica per PC IBM compatibili (varie versioni dal 95) La gestione dei file viene fatta secondo le modalità.
JAVA E LA GRAFICA L’architettura Java è graphics-ready
APPLICAZIONI & APPLET Java è un ottimo linguaggio per costruire applicazioni anche non per Internet anche non grafiche ma si è diffuso storicamente, e.
DBMS ( Database Management System)
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
EXCEL Grafici Il foglio elettronico consente di rappresentare i dati con dei grafici.
Un report è in grado di personalizzare la stampa delle informazioni rispetto alla stampa di una tabella, di un recordset o di una maschera. I report possono.
Inserimento dei dati Il contenuto di una cella può essere: –Un valore numerico –Una formula o funzione –Una stringa alfanumerica –Una data In questo caso.
Excel prima lezione.
Strumenti di Presentazione (Microsoft PowerPoint 2000)
Costruire una tabella pivot che riepiloghi il totale del fatturato di ogni agente per categorie di vendita, mese per mese. Per inserire una tabella pivot.
Swing.
Interrogare il database
Percorso didattico per l’apprendimento di Microsoft Access Modulo 5
Aggiungiamo Elementi al Frame Per poter posizionare un elemento all'interno di un frame dobbiamo utilizzare il "layout manager". Ogni contenitore (Container)
Introduzione. Introduzione Un’applet Java: Una applet ("applicazioncina") è una applicazione non autonoma, ma pensata per far parte di una pagina Internet.
Java gestione eventi introduzione. La gestione degli eventi Ci sono 3 oggetti interessati alla g. d. e.: L’oggetto interessato (event source) ad esempio.
Percorso didattico per l’apprendimento di Microsoft Access Modulo 5
Word: Gli strumenti di formattazione
Word: gli strumenti di formattazione
Microsoft Access Maschere (II).
Prof. Giuseppe Boncoddo
Lezione 11 Riccardo Sama' Copyright  Riccardo Sama' Excel.
Interfacce grafiche Capitolo 27 marzo 2004 Interfacce grafiche.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Timer Animazioni.
ESPANSIONE Personalizzare l’interfaccia utente 2010.
Java terzo contatto Swing Java.
Microsoft Access Chiavi, struttura delle tabelle.
Esercitazione  obiettivo: scrivere una applicazione per il gioco “Centra Bersaglio”  metodo individuazione e definizione delle classi necessarie.
EM 09 Il foglio elettronico EXCEL. EM 09 Foglio di calcolo Una tabella in cui è possibile disporre dati, formule e valori anche con relazioni dinamiche.
ELABORAZIONE TESTI MICROSOFT WORD EM 09.
CORSO INTERNET la Posta elettronica
Tecnologie informatiche. PowerPoint CREA UNA PRESENTAZIONE.
ESPANSIONE Personalizzare l’interfaccia utente 2008.
Microsoft Access (parte 3) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Lezione 8 Riccardo Sama' Copyright  Riccardo Sama' Word: gli strumenti di.
Lezione 16 Riccardo Sama' Copyright  Riccardo Sama' Excel: strumenti per creare.
Cloud Tecno V. Percorso didattico per l’apprendimento di Microsoft Access 4 - Le maschere.
Microsoft Word Idoneità Informatica. Inserire simboli Clic su Inserisci, nella Barra dei menu. Clic su Simbolo. Nella finestra Simbolo, vengono visualizzati.
Le modalità attraverso le quali gli utenti interagiscono con il computer A cura di Eleonora Bilotta.
Java e le interfacce grafiche
Paradigma di programmazione event-driven
Transcript della presentazione:

GUI Graphical Users Interfaces Modulo “Java” - Unità didattica 5 GUI Graphical Users Interfaces di Tiziana Catania Prof.Cantone SISSIS IV Ciclo - Classe 42A

Prerequisiti Conoscenza delle interfacce grafiche dal punto di vista dell’utente Conoscenza dei fondamenti di Java e della programmazione ad oggetti

Essere in grado di creare interfacce grafiche in Java Obiettivi (1) Essere in grado di creare interfacce grafiche in Java

Obiettivi (2) Conoscere i principi generali per progettare un’interfaccia Conoscere i vari componenti GUI e i package che li contengono Sapere come funziona la gestione degli eventi e quali sono gli eventi che possono essere generati Conoscere e saper utilizzare i layout manager

Contenuti Principi generali di progettazione I componenti GUI Il modello di gestione degli eventi I layout manager Esempi pratici in laboratorio

Metodologia Lezione frontale Lezione dialogata Brainstorming

Strumenti Libro di testo Dispense e appunti integrativi Lavagna luminosa e proiettore Computer

Verifiche Prove di laboratorio Progetto finale

Valutazione Di tipo formativo Di tipo sommativo Costanza Impegno Partecipazione Di tipo formativo Prove di lab. Progetto finale Di tipo sommativo

Tempi Lezione: Laboratorio: Verifica: Recupero e/o potenziamento: 10 ore 8 ore 3 ore 5 ore

Cos’è una GUI? Inglese: Graphical Users Interfaces Italiano: Interfacce utente grafiche Rappresenta ciò che l’utente vede di una applicazione e con cui interagisce effettivamente Es. menu, pulsanti, etc.

Principi generali di progettazione Una GUI : deve fornire tutte le funzionalità necessarie per interagire con l’applicazione deve essere progettata secondo criteri di usabilità, cioè deve: - essere intuitiva - permettere all’utente di imparare velocemente ad usare le applicazioni - non essere invadente (es.con i colori)

I componenti GUI (1) Un’interfaccia grafica è costituita da componenti GUI ossia oggetti con cui l’utente può interagire (ad es. col mouse o con la tastiera): - pulsanti - menu - campi di testo - etc…

I componenti GUI (2) Per creare componenti GUI in Java, si possono utilizzare due diversi packages: java.awt javax.swing

Il package java.awt I componenti del package java.awt (Abstract Windowing Toolkit) sono definiti anche “componenti pesanti” in quanto sono strettamente legati alle capacità GUI della piattaforma locale Il loro aspetto può variare da una piattaforma all’altra

Il package javax.swing I componenti del package javax.swing fanno parte della piattaforma Java 2 e sono detti anche “componenti leggeri” in quanto sono stati scritti in Java per cui offrono portabilità e flessibilità Il loro aspetto può essere uniforme per tutte le piattaforme o diverso per ogni piattaforma e può variare persino a tempo di esecuzione

Gerarchie di classi Per capire come usare i componenti GUI è bene conoscere le seguenti gerarchie di ereditarietà: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent

La classe Component Una classe che eredita da Component è un componente La classe Component definisce i metodi che possono essere applicati a un oggetto qualsiasi di qualsiasi sottoclasse di Component (es. paint e repaint)

La classe Container Un Container è un Component E’ costituito da un insieme di componenti collegati l’uno con l’altro Viene usato come riquadro dei contenuti al quale vengono aggiunti i vari componenti col metodo add Col metodo setLayout invece, è possibile specificare un layout manager

La classe JComponent Un Jcomponent è un Container La classe JComponent è la superclasse di molti componenti Swing e definisce diversi metodi che possono essere applicati a un oggetto di qualsiasi sottoclasse di JComponent.

Gestione degli eventi L’utente interagisce con l’interfaccia. Possibili interazioni sono: - clic e movimenti del mouse - inserimento di testo - etc. Quando avviene un’interazione, viene inviato un evento al programma Tale evento deve essere “ascoltato” da un particolare oggetto detto listener ed inviato ad un metodo di gestione appropriato che lo “elabora”

Classi di eventi Le classi di eventi sono contenute nei package: - java.awt.event che continuano ad essere utilizzati con i componenti Swing - javax.swing.event che sono stati aggiunti dopo, per definire eventi specifici per i vari tipi di componenti Swing

Listener e gestori (1) Un listener degli eventi per un evento GUI è un oggetto di una classe che implementa una o più interfacce listener degli eventi dei package java.awt.event e javax.swing.event Il listener sta in ascolto di specifici eventi che possono essere generati. Quando viene generato un evento esso viene inviato solo ai listener di tipo appropriato: viene chiamato il metodo di gestione dell’evento.

Listener e gestori (2) Le interfacce listener specificano uno o più metodi di gestione che devono essere definiti (tutti) nella classe che le implementa, altrimenti: la classe risulterà abstract e non potremo utilizzarla per creare oggetti

Listener e gestori (3) Per elaborare un evento si deve - registrare un listener degli eventi - implementare un gestore degli eventi Quando si verifica un evento, il componente GUI interessato notifica i suoi (eventuali) listener registrati e viene chiamato automaticamente il gestore per quel tipo di evento.

I componenti GUI JLabel JTextField JButton JCheckBox JRadioButton Mostreremo alcuni fondamentali componenti GUI, senza pretendere di esaurire l’argomento: Vedremo il codice più in dettaglio JLabel JTextField JButton JCheckBox JRadioButton JComboBox

JLabel La classe javax.swing.JLabel è una sottoclasse di JComponent Una label è un’etichetta: una singola riga di testo che di solito non viene modificata Non ci sono eventi per l’oggetto JLabel Vediamo un esempio: la creazione di label con tre diversi costruttori, con diversi argomenti

Esempio con JLabel (1) public class ProvaLabel extends JFrame { private JLabel label1, label2, label3; public ProvaLabel() { super( "Prova di JLabel..." ); Container c = getContentPane(); //ritorna un rif.al //riquadro dei contenuti c.setLayout( new FlowLayout() ); // costruttore JLabel con argomento stringa label1 = new JLabel( "Label con testo" ); label1.setToolTipText( "Questa è la label1" ); c.add( label1 );

Esempio con JLabel (2) // costruttore JLabel con stringa, Icon e allineamento //orizzontale Icon libro = new ImageIcon( "libro.gif" ); label2 = new JLabel( "Label con testo e icona", libro, SwingConstants.LEFT ); label2.setToolTipText( "Questa è la label2" ); c.add( label2 ); Un Icon è un oggetto di una classe (in questo caso ImageIcon) che implementa l’interfaccia Icon del package javax.swing. ImageIcon supporta immagini GIF e JPEG. SwingConstant.LEFT è una costante definita nell’interfaccia SwingConstant del package javax.swing

Esempio con JLabel (3) // costruttore JLabel senza argomenti label3 = new JLabel(); label3.setText( "Label con icona e testo in basso" ); label3.setIcon( libro ); label3.setHorizontalTextPosition( SwingConstants.CENTER ); label3.setVerticalTextPosition( SwingConstants.BOTTOM ); label3.setToolTipText( "Questa è la label3" ); c.add( label3 ); setSize( 260, 220 ); show(); }

Esempio con JLabel (4)

JTextField La classe JTextField estende la classe JTextComponent del package javax.swing.text. Serve a creare un’area di testo composta da una sola riga su cui scrivere o visualizzare testo. In maniera simile JPasswordField Viene generato un evento se si digita del testo nella casella e si preme Invio Vediamo un esempio:

Esempio di JTextField (1) public class ProvaTextField extends JFrame { private JTextField text1, text2; public ProvaTextField() { super( "Prova JTextField" ); Container c = getContentPane(); c.setLayout( new FlowLayout() ); // Costruttore JTextField con 12 colonne di testo text1 = new JTextField( 12 ); c.add( text1 );

Esempio di JTextField (2) // Costruttore JTextField con testo di default text2 = new JTextField( "Inserisci il testo" ); c.add( text2 ); TextFieldHandler handler = new TextFieldHandler(); text1.addActionListener( handler ); text2.addActionListener( handler ); setSize( 350, 70 ); show(); }

Esempio di JTextField (3) private class TextFieldHandler implements ActionListener { public void actionPerformed( ActionEvent e ) { String s = ""; if ( e.getSource() == text1 ) s = "text1: " + e.getActionCommand(); else if ( e.getSource() == text2 ) s = "text2: " + e.getActionCommand(); JOptionPane.showMessageDialog( null, s ); } Ritorna il testo del JTextField che ha generato l’evento Determina il componente GUI interessato

Esempio di JTextField (4)

JButton La classe JButton eredita dalla classe AbstractButton del package javax.swing. Un JButton è un pulsante su cui è possibile fare clic: l’evento generato è un ActionEvent. Btn1 = new JButton(“Vai”); crea un JButton con etichetta “Vai” Btn2 = new JButton(“Vai”,libro); crea un JButton con etichetta “Vai” e l’Icon libro, con il testo a destra

JCheckBox JCheckBox: sono pulsanti di stato con valore true/false a seconda che la casella sia selezionata o meno. Ad esso viene associata un’etichetta con il costruttore. Ad esempio: Se l’utente seleziona una casella viene generato un ItemEvent che può essere gestito da un ItemListener (un oggetto che implementa l’interfaccia ItemListener) il quale deve definire il metodo itemStateChanged chbox = new JCheckBox(“Prova”);

JRadioButton JRadioButton: sono pulsanti di stato con valore true/false a seconda che siano selezionati o meno. A differenza dei JCheckBox, se i pulsanti radio appaiono in gruppo (relazione mantenuta dall’oggetto ButtonGroup) solo 1 di essi alla volta può essere selezionato. Se l’utente fa clic si genera un ItemEvent. Vediamo un esempio: rbtn1 = new JRadioButton(“Scelta A”, true); rbtn2 = new JRadioButton(“Scelta B”, false); (…) radioGroup = new ButtonGroup(); radioGroup.add(rbtn1);radioGroup.add(rbtn2);

JComboBox JComboBox: sono i classici elenchi a discesa che mostrano una serie di elementi tra i quali l’utente può scegliere. Sono dette anche “caselle combinate”. Generano gli ItemEvent. Vediamo un esempio: private String names[] = { "autore", "titolo","editore", "prezzo" }; (…) cbox = new JComboBox( names ); cbox.setMaximumRowCount( 3 ); Ad ogni elemento è associato un indice numerico, a partire da 0. Nell’esempio, cbox.getSelectedIndex() restituirebbe l’indice dell’elemento selezionato.

Creare interfacce grafiche in Java I layout manager Creare interfacce grafiche in Java non è semplice I layout manager aiutano a posizionare e dimensionare i vari componenti GUI dell’interfaccia. Ne esistono diversi tipi ma noi vedremo i seguenti: - FlowLayout - BorderLayout - GridLayout

FlowLayout Dispone i componenti nel contenitore nell’ordine in cui vengono aggiunti, da sinistra a destra fino al bordo, per continuare nella riga successiva. Per default i componenti vengono centrati, ma possono essere allineati anche a sinistra o a destra. Per impostare il layout di tipo FlowLayout: layout = new FlowLayout(); c = getContentPane(); c.setLayout(layout); Per modificare l’allineamento: layout.setAlignment(FlowLayout.LEFT); //ma ci sono anche CENTER e RIGHT layout.layoutContainer( c ); //il container deve essere organizzato per il nuovo //layout modificato

Esempio di FlowLayout

BorderLayout Dispone i componenti nel contenitore in cinque aree distinte: North, South, East, West, Center. Si possono riempire tutte o solo alcune. North e South si estendono orizzontalmente fino ai lati e verticalmente quanto i componenti che li contengono. East e West si estendono verticalmente tra North e South e orizzontalmente quanto i componenti che li contengono. Center si estende per lo spazio restante. Se non sono occupate tutte le aree, le altre si espandono come vedremo in un esempio. Per impostare il layout di tipo BorderLayout: Es. layout = new BorderLayout(4,5); //4 gap orizz. 5 vert. c = getContentPane();c.setLayout(layout); Per inserire i componenti: c.add(component, regione); regione può essere: BorderLayout.NORTH, BorderLayout.SOUTH, BorderLayout.EAST etc…

Esempio BorderLayout(1) Inseriamo nelle regioni dei componenti JButton etichettati con i nomi delle regioni, per vedere come vengono disposti e dimensionati nel caso in cui li inseriamo tutti o no.

Esempio BorderLayout(2)

GridLayout Dispone i componenti nel contenitore in righe e colonne, come in una griglia. Ogni componente aggiunto ha le stesse dimensioni degli altri. I componenti vengono aggiunti da sinistra a destra partendo dalla prima riga. Per impostare il layout di tipo GridLayout: Es. layout = new GridLayout(3,2); oppure layout = new GridLayout(3,2,4,4); c = getContentPane(); c.setLayout(layout); (..) c.add(component);

Esempio di GridLayout Inseriamo dei componenti JButton in un GridLayout con tre righe e tre colonne

Altri layout manager Esistono anche altri layout manager più sofisticati. Li citiamo per completezza ma non li spiegheremo: - BoxLayout - CardLayout - GridBagLayout

Considerazioni finali Abbiamo visto come progettare semplici interfacce grafiche in Java. Abbiamo mostrato alcuni esempi di come ciò può essere fatto. La teoria, soprattutto in questo caso, non sostituisce la pratica. E’ necessario provare e riprovare in laboratorio per vedere i risultati.

FINE