23 - Graphical User Interface GUI (Cenni)



Похожие документы
3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

10 - Programmare con gli Array

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

L interfaccia grafica in Java

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

Eclipse - Nozioni Base

Programmazione Java: Interfacce grafiche (GUI)

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso Eclipse. Prerequisiti. 3 Window Builder

Le query di raggruppamento

File, Modifica, Visualizza, Strumenti, Messaggio

Struttura di un programma Java

20 - Input/Output su File

Modulo 2: Strutture fondamentali della programmazione Java

Le variabili. Olga Scotti

Guida all uso di Java Diagrammi ER

8.9 CREARE UNA TABELLA PIVOT

2 - Introduzione al linguaggio Java

IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI

Funzioni in C. Violetta Lonati

Registratori di Cassa

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Modulo 3 - Elaborazione Testi 3.6 Preparazione stampa

Algoritmi di Ricerca. Esempi di programmi Java

Tale attività non è descritta in questa dispensa

MANUALE D USO DELLA PIATTAFORMA ITCMS

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

Mac Application Manager 1.3 (SOLO PER TIGER)

ISTRUZIONI XCODE. Autore: Luca Florio (luca.florio<at>polimi.it)

Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento.

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

La struttura dati ad albero binario

Per effettuare la stampa di una cartella di lavoro si accede al comando. Stampa dal menu File o si utilizza il pulsante omonimo sulla barra

Matematica in laboratorio

SIFORM MANUALE VOUCHER FORMATIVI A DOMANDA AZIENDALE

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Uso di base delle funzioni in Microsoft Excel

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Object Oriented Software Design

APRIRE UN PROGRAMMA DI FOGLIO ELETTRONICO

Università di L Aquila Facoltà di Biotecnologie Agro-alimentari

MAUALE PIATTAFORMA MOODLE

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Esercizio data base "Biblioteca"

GateManager. 1 Indice. tecnico@gate-manager.it

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Progettazione : Design Pattern Creazionali

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

Biblioteca di Cervia NOZIONI BASE DI INFORMATICA

L amministratore di dominio

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

MAGAZZINO FISCALE (agg. alla rel )

Guida alla configurazione della posta elettronica dell Ateneo di Ferrara sui più comuni programmi di posta

Appunti di: MICROSOFT EXCEL

PowerPoint 2007 Le funzioni

MANUALE PER L UTILIZZO DELLA FUNZIONE EVENTI Rel.1.2 del 29 gennaio 2004

OSSIF WEB. Manuale query builder

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1

USARE JOOMLA 1.7/2.5 per gestire il vostro sito.

PROGETTO PER LA TRASMISSIONE DOCUMENTI RELATIVI ALL APPROVAZIONE DELLE MANIFESTAZIONI IN FORMA DIGITALE

Guida Compilazione Piani di Studio on-line

NAVIGAORA HOTSPOT. Manuale utente per la configurazione

Utilizzo Web Mail LUSPIO

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Grafico della parabola

Guida rapida per i docenti all'uso della piattaforma di e-learning dell'istituto Giua

Fratini Service di G. Fratini

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

PIANO DI TUTELA DELLE ACQUE DELLA SICILIA (di cui all'art. 121 del Decreto Legislativo 3 aprile 2006, n 152)

Cominciamo dalla barra multifunzione, ossia la struttura a schede che ha sostituito la barra dei menu e la barra delle icone (Figura 1).

MANUALE PARCELLA FACILE PLUS INDICE

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

GESTIONE INCASSI SAGRA. Ver. 2.21

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

MANUALE EDICOLA 04.05

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Il calendario di Windows Vista

Proteggiamo il PC con il Firewall di Windows Vista

Strumenti informatici Realizzare grafici e tabelle con Excel e SPSS

Utilizzo delle formule in Excel

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

LE CARATTERISTICHE DEI PRODOTTI MULTIVARIANTE

POSTA ELETTRONICA Per ricevere ed inviare posta occorrono:

STRUMENTO PER LA COMPRESSIONE E LA CRIPTAZIONE DI FILE

Транскрипт:

23 - Graphical User Interface GUI (Cenni) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea Magistrale in Informatica Umanistica A.A. 2013/2014 Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 1 / 24

Premessa In questa lezione vedremo gli aspetti relativi alla realizzazione di interfacce grafiche in maniera molto superficiale. Nella pagina web del corso potete trovare una DISPENSA introduttiva in italiano sullo sviluppo di interfacce grafiche Autori della dispensa: M. de Leoni, M. Mecella e S. Saltarelli Università di Roma Inoltre, trovate tutte le informazioni sulle varie classi usate in questa lezione nella documentazione della Libreria Standard di Java (Java API) link sulla pagina web del corso Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 2 / 24

Interfaccia utente testuale Nei programmi realizzati fino ad ora abbiamo sempre usato una interfaccia testuale per interagire con l utente Nei programmi più complessi l interfaccia era tipicamente basata su un menù principale: Buongiorno, Paolo Milazzo SPORTELLO N. 1 OPERAZIONI DISPONIBILI [ A] pri nuovo conto [S] aldo [ V] ersamento [P] relievo [ M] atura interessi ( tutti i conti ) [ R] iepilogo conti [ C] ambia tassi di interesse [U] scita scelta : A Inserisci tipo cliente [ F/ B]: F Inserisci saldo iniziale : 100 Creato conto numero 1001 Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 3 / 24

GUI (1) La grande maggioranza della applicazioni moderne non prevede una interfaccia testuale Le applicazioni normalmente prevedono una interfaccia utente grafica (o Graphical User Interface GUI) L interfaccia grafica può essere realizzata: tramite opportune librerie del linguaggio di programmazione (applicazioni tradizionali) come pagina web (interfaccia web-based) da visualizzare tramite un browser Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 4 / 24

GUI (2) Lo sviluppo di un interfaccia grafica è un attività piuttosto complessa A volte implementare un interfaccia grafica richiede più tempo che realizzare il motore dell applicazione Esistono molte librerie (GUI frameworks) per creare interfacce grafiche in Java: Alcuni nomi: AWT/Swing, SWT, JavaFX,... Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 5 / 24

Scopo di questa lezione Gli scopi di questa lezione sulle interfacce grafiche: mostrare esempi che potrebbero essere utili per la realizzazione del progetto d esame illustrare i concetti essenziali che possano consentire un approfondimento individuale dell argomento Vedremo alcuni esempi pratici basati su AWT/Swing (il GUI framework classico di Java). Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 6 / 24

Esempi Gli esempi che vedremo: 1. Finestre pop-up per interagire con l utente interfaccia grafica un po brutale... 2. Finestra menù principale + finestre pop-up un po rozza, ma potrebbe andare più o meno bene per un progetto d esame 3. Piccolo esempio di interfaccia a singola finestra iniziano le complicazioni... 4. Piccolo esempio di interfaccia a finestre multiple sempre più complicato... Inoltre, vedremo un piccolo esempio di uso di una area di testo con barre di scorrimento (utile quando si devono visualizzare molte righe di testo) Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 7 / 24

Packages Tutte le classi che useremo per realizzare le interfacce grafiche apparterrano a uno diquesti packages: java.awt javax.swing Per semplicità in tutti gli esempi importeremo tutte le classi di questi due pacchetti: import java. awt.*; import javax. swing.*; Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 8 / 24

Finestre pop-up (1) Le finestre pop-up sono piccole finestre per l interazione con l utente Tipicamente possono contenere: brevi messaggi richieste di inserire un valore richieste di conferma Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 9 / 24

Finestre pop-up (2) Le finestre pop-up tipicamente appaiono sopra alle finistre di una applicazione attirano l attenzione dell utente su un piccolo particolare (un messaggio, una scelta,...) Come primo approccio all interfacciamento grafico possiamo usarle per sostituire gli input/output testuali di un nostro programma Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 10 / 24

Finestre pop-up (3) In Java le finestre di pop-up possono essere create usando alcuni metodi (statici) della classe JOptionPane JOptionPane.showMessageDialog(...) - mostra un pop-up con un messaggio JOptionPane.showInputDialog(...) - mostra un pop-up con una casella di input JOptionPane.showConfirmDialog(...) - mostra un pop-up che offre una scelta Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 11 / 24

Esempio 1: calcolo della somma (1) Come esempio di uso dei pop-up consideriamo un programma che calcola la somma di una sequenza di numeri inseriti dall utente Variante: dopo ogni inserimento si chiede all utente se vuole continuare Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 12 / 24

Esempio 1: calcolo della somma (2) Con l interfaccia testuale: import java. util. Scanner ; public class Somma { public static void main ( String [] args ) { Scanner input = new Scanner ( System. in ); } } int somma =0; char scelta ; do { // chiede in input un numero System. out. println (" Inserisci un numero :"); somma += input. nextint (); // eccezione se l utente sbaglia tipo do { // chiede se si vuole continuare // ( si rende necessario un altro ciclo ) System. out. println (" Vuoi continuare (S/N)?"); scelta = input. next (). charat (0); input. nextline (); // consuma il resto della riga } while ( scelta!= S && scelta!= N ); } while ( scelta!= N ); // stampa il risultato System. out. println ("La somma e : " + somma ); Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 13 / 24

Esempio 1: calcolo della somma (3) Con l interfaccia grafica (basata su finestre pop-up): import java. awt.*; import java. swing.*; public class SommaPopUp { public static void main ( String [] args ) { int somma =0; int scelta ; do { // chiede in input un numero ( il popup lo legge come stringa ) String s = JOptionPane. showinputdialog (" Inserisci un numero "); somma += Integer. parseint ( s); // eccezione se utente sbaglia tipo // chiede se si vuole continuare. Risposte possibili Si/ No. // titolo finestra pop - up: Scelta. scelta = JOptionPane. showconfirmdialog (null," Vuoi continuare?", " Scelta ", JOptionPane. YES_NO_OPTION ); } while ( scelta!= JOptionPane. NO_OPTION ); // notare } // stampa il risultato JOptionPane. showmessagedialog ( null, " La somma e : " + somma ); } Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 14 / 24

Creare finestre pop-up (1) Riguardo in particolare le finestre pop-up di scelta, è utile vedere i vari modi in cui possono essere create: crea un pop-up di scelta con le opzioni Si, No e Annulla e domanda Cosa scegli" scelta = JOptionPane. showconfirmdialog ( null," Cosa scegli?"); come prima, ma la finestra ha titolo "Scelta" e le opzioni sono solo Si e No scelta = JOptionPane. showconfirmdialog ( null," Cosa scegli?", " Scelta ", JOptionPane. YES_NO_OPTION ); La costante (di tipo int) JOptionPane.YES_NO_OPTION fa capire al metodo che le opzioni devono essere solo Si e No. Alternative: JOptionPane.YES_NO_CANCEL_OPTION e JOptionPane.OK_CANCEL_OPTION Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 15 / 24

Creare finestre pop-up (2) Il valore restituito da JOptionPane.showConfirmDialog(...) è un valore intero che corrisponde al bottone premuto dall utente Per capire che bottone è stato premuto bisogna confrontare il valore restituito con delle costanti fornite dalla classe JOptionPane scelta = JOptionPane. showconfirmdialog ( null," Premi un bottone... "); switch ( scelta ) { case JOptionPane. YES_OPTION : // premuto " Si" case JOptionPane. NO_OPTION : // premuto " No" case JOptionPane. CANCEL_OPTION : // premuto " Annulla " case JOptionPane. OK_OPTION : // premuto " Ok" case JOptionPane. CLOSED_OPTION : // chiuso il popup } Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 16 / 24

More info... Maggiori informazioni sulla classe JOptionPane sono nella documentazione della Libreria di Java Link diretto: http://docs.oracle.com/javase/7/docs/api/javax/swing/joptionpane.html Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 17 / 24

Finestre per le applicazioni Finestre più sofisticate dei pop-up richiedono un po di lavoro di costruzione. Una finestra è un oggetto della classe JFrame Ogni elemento che deve comparire nella finestra (bottoni, testo, caselle di input, ecc...) è un oggetto diverso Esistono diverse classi per i diversi tipi di elementi: JButton per i bottoni JLabel per il testo JTextField per i campi di input... Tutti gli oggetti creati devono essere inseriti nell oggetto della classe JFrame La disposizione degli oggetti nella finestra può seguire diversi modelli di layout che non vedremo... Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 18 / 24

Eventi (1) Supponiamo di aver costruito correttamente la finestra con tutti gli elementi necessari Il programma ora rimane in attesa che l utente faccia qualcosa... prema un bottone inserisca un valore... Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 19 / 24

Eventi (2) Quando l utente interagisce con l interfaccia grafica fa scaturire un evento Affinchè ai vari eventi corrispondano gli effetti che vogliamo, dovremo implementare dei gestori (o action listeners) ogni oggetto avrà il suo gestore, che viene richiamato quando l utente interagisce con quell oggetto ad esempio: ogni bottone avrà il suo gestore, che contiene i comandi da eseguire quando quel bottone viene premuto Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 20 / 24

Esempio 2: Un contatore (1) Esempio: Supponiamo di avere una classe Contatore con le seguenti funzionalità: crea un nuovo contatore inizializzato a 0 incrementa il contatore di 1 decrementa il contatore di 1 azzera il contatore Vogliamo costruire la seguente interfaccia grafica: Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 21 / 24

Esempio 2: Un contatore (2) Per ottenere il risultato voluto dobbiamo: 1. Creare la finestra con JFrame 2. Creare i quattro bottoni con JButton 3. Implementare un gestore per ogni bottone ogni gestore sarà una classe che implementa ActionListener 4. Inserire i JButton nel JFrame in realtà dovremo raccogliere i JButton in un contenitore JPanel Vedere il codice dell applicazione ContatoreGUI nella pagina web del corso Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 22 / 24

Esempio 3: somma di due numeri Esempio: Vogliamo realizzare un programma che sommi coppie di numeri con questa interfaccia: Dobbiamo: Usare le varie classi corrispondenti ai vari tipi di elementi inclusi nella finestra Prevedere un gestore dell evento di pressione del bottone che possa accedere ai valori inseriti nelle caselle di testo (per sommarli) Vedere il codice dell applicazione Addizionatore nella pagina web del corso Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 23 / 24

Esempio 4: due finestre Esempio: Vogliamo realizzare un programma che passi da una finestra a un altra (e ritorno) premendo un bottone. Le due finestre devono avere il seguente aspetto: Dobbiamo: Usare due oggetti JFrame Consentire ad ogniuno dei due oggetti di poter accedere all altro Il gestore dell evento di pressione del bottone renderà invisibile la finestra corrente e visibile l altra Vedere il codice dell applicazione Finestra1 nella pagina web del corso Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 24 / 24

Esempio 5: barre di scorrimento Esempio: Una finestra che include un area di testo con barre di scorrimento Vedere il codice dell applicazione Scrollabile nella pagina web del corso Paolo Milazzo (Università di Pisa) Programmazione - GUI A.A. 2013/2014 25 / 24