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

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

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

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

Applicazioni grafiche e finestre

Grafica ed eventi. Più movimento alle classi

Grafica in Java. introduzione

L interfaccia grafica in Java

Introduzione al package grafico Swing

Programmazione Java: Interfacce grafiche (GUI)

APPLICAZIONI & APPLET

PROVA FINALE Ingegneria del software

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

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

APPLICAZIONI & APPLET

Lezione n.12 LPR Informatica Applicata GUI programming

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

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

Controllo del layout. Per disporre in modo più strutturato utilizziamo pannelli con diverse politiche di disposizione (layout)

Application VS Applet

Java SE 6. Programmazione grafica (3)

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

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

Graphics. Disegno a mano libera

Java terzo contatto. Swing Java

Unità B2 Gestione eventi 2

Grafica swing in Java

Java GUI. Swing Java

Corso sul linguaggio Java

Sviluppo di Interfacce Grafiche in Java

TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet

COGNOME.NOME. Matricola

Programmazione in rete e laboratorio

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

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

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

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Corso sul linguaggio Java

Alessandro De Luca. Lezione, 13 maggio 2015

ESERCITAZIONE 6. inserire articoli (e relativo prezzo), sia in lire che in euro. avere sempre sott'occhio il totale, sia in lire che in

Appendice B:Interfacce Grafiche

Grafico della parabola

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

Java SE 6. Programmazione grafica (2)

Programmazione in rete e laboratorio

Prof. Pagani Corrado ESERCITAZIONI JAVA

Paradigmi di programmazione (sperimentazioni)

Evento sulla modifica delle caselle di testo

L interfaccia grafica con Java

Pag. 1 di 5. private Color C0 = new Color(255, 0, 0);

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Interazioni col mondo: eventi

I costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard

Corso Eclipse. Prerequisiti. 3 Window Builder

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

BorderLayout. 1 Gestori di Layout (guida visuale)

APPLET APPLICAZIONI & APPLET APPLET APPLET APPLET SWING: GERARCHIA DI CLASSI

Prova d Esame Compito A

Linguaggi di Programmazione I Lezione 16

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB.

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

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Gestione di eventi ed interfacce utente grafiche

NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!

Prova d Esame Compito A

Campo Minato. in java

Eventi e listener per i componenti grafici

GUI e MVC. Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni)

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

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

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

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

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

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

Gestione degli eventi

Esempi di programmazione

Corso di Progettazione del Software

4 settembre 2000 Master in Web Technology e Security - Matteo Baldoni 2. incrementa il

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

Esempio: Interfacce. Gioco Interfacce

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Introduzione all uso degli oggetti in Java (parte II) Walter Didimo

GESTIONE DEGLI ERRORI

Swing. Swing 1. Java e la grafica Java permette di realizzare agevolmente applicazioni grafiche Package java.awt

Programmazione ad Eventi

Esempio: Interfacce. Gioco Interfacce

domenica 9 giugno 13 Serializzazione

GESTIONE DEGLI ERRORI

Marco Faella Classi interne, locali ed anonime

PROGRAMMAZIONE Gerarchie di tipi: implementazioni multiple e principio di sostituzione

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

Interfacce grafiche. Una GUI (Graphic User Interface) contiene vari componenti: bottoni, etichette, immagini...

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Programmazione I - corso B a.a prof. Viviana Bono

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

Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012

Transcript:

JFrame JFrame è la classe di base per le finestre Programmazione ad Oggetti Interfacce grafiche Fornisce tutte le caratteristiche di una finestra vuota Barra del titolo Pulsanti standard Bordo ridimensionabile Etc. V 1.4 Marco Torchiano 2009 2 JFrame - Esempio public class FrameSemplice extends JFrame { public static void main(string[] args) { JFrame f = new FrameSemplice(); f.show(); public FrameSemplice(){ super("finestra"); setsize(200,100); Che succede se non faccio setsize()? Chiusura della finestra La pressione del pulsante Chiude la finestra ma NON termina il programma Occorre definire esplicitamente l operazione da eseguire alla chiusura della finestra. Es. setdefaultcloseoperation( JFrame.DISPOSE_ON_CLOSE); o 3 4 Linee guida Nella realizzazione di interfacce grafice occorre distinguere due aspetti: Layout: come disporre gli elementi grafici per ottenere un certo aspetto grafico Eventi: come legare il comportamento agli elementi grafici La logica del programma deve restare, per quanto possibile, separata dall interfaccia grafica. Tipologia di GUI Possiamo distinguere due tipologie estreme di interfacce grafiche: composizione di componenti disegno libero Nella realtà si usano interfacce intermedie tra questi tipi. Componenti Disegno libero 5 6 1

GUI con Componenti Interfacce come composizione di componenti Utilizzano i componenti grafici predefiniti (es. pulsanti, caselle di testo, etichette) Sono adatte per creare un interfaccia grafica di un programma che in teoria potrebbe avere un interfacca a carattere Permettono di trattare informazioni per lo più testuali GUI con disegno Interfacce a disegno libero Scrivono direttamente sullo schermo utilizzando l interfaccia Graphics Permettono di trattare informazioni grafiche (diagrammi etc.) Di solito usano un JPanel per definire esattamente l area in cui disegnare 7 8 Flusso di esecuzione Il metodo main nelle GUI serve solo a creare un istanza della finestra Nelle GUI NON esiste un ordine di esecuzione predefinito Le operazioni vengono eseguite in risposta ad eventi esterni (es. mouse) La gestione degli eventi è serializzata Per eseguire operazioni in parallelo occorre utilizzare dei thread Esercizio Definire un interfaccia grafica per l applicazione cassa del supermercato. Due possibilità: Il più simile possibile alla versione testuale Versione più user friendly che sfrutta le possibilità delle GUI 9 10 Simile alla versione testuale ContentPane Struttura BorderLayout JLabel JTextField input NORTH Comando JPanel CENTER JTextArea output SOUTH OK JButton pulsante 11 12 2

Layout public class SimpleCassa extends JFrame implements ActionListener{ JTextField input=new JTextField(20); Componenti JTextArea output=new JTextArea(); JButton pulsante=new JButton("OK"); public SimpleCassa(){ Container c = this.getcontentpane(); c.setlayout(new BorderLayout()); JPanel panel = new JPanel(); Creazione panel.add(new JLabel("Comando:")); della GUI panel.add(input); c.add(panel,borderlayout.north); c.add(output,borderlayout.center); c.add(pulsante,borderlayout.south); setsize(500,400); Eventi pulsante.addactionlistener(this); public void actionperformed(actionevent e){ String cmd = input.gettext(); if(cmd.equals( CLOSE )){ output.append( ---- Scontrino ----\n"); //... 13 14 Versione User-friendly Struttura P001 P002 P003 GridBag CLOSE Pronto scontrino 15 16 Test di GUI Per eseguire il test di GUI costruite come composizione di componenti si possono adottare due approcci: Test dall esterno Test dall interno Test esterno Test dall esterno Tramite il sistema operativo si inviano degli eventi all applicazione simulando le operazioni eseguite da un utente Pro: approccio realistico Contro: macchinoso e dipendente dal S.O. Di solito si usano degli strumenti che registrano le operazioni fatte da un utente e le replicano 17 18 3

Test interno Test dall interno Si chiamano direttamente i metodi dei componenti grafici che hanno (circa) gli stessi effetti di un uso reale (ad es. doclick) Pro: semplice e indipentente dal S.O. Contro: poco realistico perchè salta alcuni passi Contro: bisogna rendere testabili le classi Es. rendere visibili gli attributi Test di interfacce grafiche public void testgui(){ SimpleCassa gui = new SimpleCassa(); gui.setvisible(true); gui.input.settext("p001"); gui.input.settext("p002"); gui.input.settext("p001"); gui.input.settext("close"); String output = gui.output.gettext(); asserttrue("output sbagliato", output.indexof("totale: 7.5")>-1); 19 20 Disegno libero Disegno Libero - Esempio Per disegnare in maniera esplicita l in terfaccia grafica si usano due elementi: Il metodo void paint(graphics g) Deve essere ridefinito Viene chiamato dal S.O. L interfaccia Graphics Fornisce i metodi per disegnare 21 22 Esempio public class Disegno extends JFrame{ int x; int y; public void paint(graphics g){ Rectangle b = getbounds(); g.setcolor(color.red); g.drawroundrect(4,30, b.width-9,b.height-35,50,50); g.setcolor(color.blue); g.drawoval(x,y,10,10); g.setcolor(color.green); g.filloval(x+1,y+1,9,9); g copre tutta l area della finestra, titolo e bordi inclusi 23 Events public class Disegno implements KeyListener{ public void keypressed(keyevent e) { if(e.getkeycode()==keyevent.vk_down){ movexy(0,5); // void movexy(int deltax, int deltay){ x+=deltax; y+=deltay; this.repaint(); 24 4

Osservazioni L operazione di repaint NON cancella il contenuto della finestra Quindi si ha l effetto scia Occorre cancellare esplicitamente il contenuto della finestra: Rectangle bounds = getbounds(); g.clearrect(0,0,bds.width,bounds.height); Consigli Consigli: Definire il metodo paint su un componente che non contiene nulla NON ridefinire il metodo paint() su una finestra che contiene componenti Spesso si definisce una classe che estende JPanel e si ridefinisce il metodo paint() 25 26 5