Programmazione Orientata agli Oggetti in Linguaggio Java

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

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

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

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

Programmazione Java: Interfacce grafiche (GUI)

Sviluppo di Interfacce Grafiche in Java

Principi di base della programmazione di interfacce grafiche in Java

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

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

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

Alessandro De Luca. Lezione, 13 maggio 2015

23 - Graphical User Interface GUI (Cenni)

L interfaccia grafica in Java

Grafica swing in Java

Introduzione al package grafico Swing

Progettazione e Sviluppo di Interfacce Grafiche con Java Swing

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

BorderLayout. 1 Gestori di Layout (guida visuale)

L interfaccia grafica con Java

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

Java GUI. Swing Java

Introduzione (Swing vs AWT)

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

Tutorial SWING-AWT: Il Layout Manager GridBagLayout Di Michele de Nittis

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

Programmazione in rete e laboratorio

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

ESERCITAZIONI SU Java

JAVA Interfacce grafiche per Applicazioni ed Applet

Calcolare con il computer: Excel. Saro Alioto 1

APPLICAZIONI & APPLET

Progettazione multimediale

Interazioni col mondo: eventi

Database Modulo 6 CREAZIONE DI MASCHERE

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java

Windows. La prima realizzazione di un ambiente grafico si deve alla Apple (1984) per il suo Macintosh. La gestione dei file conserva la logica del DOS

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

PROGRAMMAZIONE GRAFICA

Gestione di eventi ed interfacce utente grafiche

Excel. Il foglio di lavoro. Il foglio di lavoro Questa viene univocamente individuata dalle sue coordinate Es. F9

TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A

Programmazione in Java e gestione della grafica. Lezione 19

Insert > Object > Chart

Primi passi con Geogebra

Grafico della parabola

8. GUI : Graphics User Interface

Corso Eclipse. Prerequisiti. 3 Window Builder

Thread e Concorrenza in Java Swing

Informatica d ufficio

InDesign CS5: gestire i documenti

Microsoft Excel Nozioni avanzate

maggio 2004 Stefano Sanna - gerda@crs4.it

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

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

UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE

Programmazione Procedurale in Linguaggio C++

L INTERFACCIA CAPITOLO. In questo capitolo

Automatizzare le attività con le macro di Visual Basic

Esercitazione del Corso di Informatica Grafica. Strumenti per scrivere applicazioni in JAVA

Microsoft Excel Lezione 3

Grafici. 1 Generazione di grafici a partire da un foglio elettronico

La stampa Unione con MS-Word

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

Word Formattazione del testo. Samuele Mazzolini

Threads e Concorrenza in Java Swing

I dati rappresentati (tutti di pura fantasia) sono contenuti in un file excel denominato Personale.xls.

Sommario. A proposito di A colpo d occhio 1. Novità di Access Primi passi con Access

Informatica WINDOWS. Francesco Tura F. Tura

COGNOME.NOME. Matricola

Appunti sui Fogli Elettronici. Introduzione. D. Gubiani. 19 Luglio 2005

Progettare un'applicazione di tipo GUI con tre menu e voci di menu (come nelle figure sottostanti):

Il foglio elettronico

EXCEL. Alfabetizzazione Informatica Prof. GIUSEPPE PATTI

Excel 2. Master Universitario di II livello in MANAGER NELLE AMMINISTRAZIONI PUBBLICHE A.A Prof.ssa Bice Cavallo

Università degli studi di Verona. Corso di Informatica di Base. Lezione 4 - Parte 2. Rifinitura di un documento

Informatica e Informatica di Base

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

WORD PROCESSING.

Come ordinare facilmente i dati in un foglio di calcolo Excel definendo chiavi e parametri.

Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori

6. Editor Divi. Il layout. Guida Sintetica Wordpress //

Infor LN [GUIDA INFOR LN] [GUIDA INFOR LN] Baltur S.p.A. Rev /2013. Guida all utilizzo del Gestionale Infor LN per le Agenzie Baltur

Transcript:

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Grafica: Componenti versione 1.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca Università della Basilicata mecca@unibas.it Programmazione Grafica: Componenti >> Sommario Sommario Componenti Layout Editor Grafico dell IDE 2

Programmazione Grafica: Componenti >> Componenti Componenti Blocchi fondamentali dell interfaccia finestra pannello componente Finestra spazio sullo schermo riservato all applicazione grafica dal Window manager 3 Programmazione Grafica: Componenti >> Componenti Componenti Finestra o frame principale ogni applicazione ha una finestra principale (oggetto di tipo JFrame) può averne altre secondarie Finestre secondarie dipendono dalla finestra principale spesso utilizzate per la visualizzazione di messaggi (es: messaggi di errore) JDialog 4

Programmazione Grafica: Componenti >> Componenti Componenti Finestra di dialogo modale e non modale una sottofinestra si dice modale se impedisce l accesso alla finestra principale finchè non viene chiusa La classe JOptionPane vari metodi per produrre finestre di dialogo showmessagedialog(), showinputdialog(), showconfirmdialog() 5 Programmazione Grafica: Componenti >> Componenti Componenti Componente elemento grafico disegnato in una finestra con una funzione Principali componenti bottoni (JButton) campi per l immissione di testo (JTextField) etichette per la visualizzazione di messaggi (JLabel) 6

Programmazione Grafica: Componenti >> Componenti Componenti Inoltre nel caso di Swing, i componenti grafici non vengono disegnati direttamente sulla finestra ma in un pannello Pannello sfondo vuoto per il disegno di componenti ogni finestra ha un pannello principale (o content pane ) JPanel 7 Programmazione Grafica: Componenti >> Componenti Componenti Struttura tipica dell interfaccia un frame principale per la finestra dell applicazione uno o più pannelli, ciascuno dei quali corrisponde ad uno schermo dell applicazione uno o più componenti per pannello eventuali frame secondari (es: finestre di dialogo) 8

Programmazione Grafica: Componenti >> Componenti Componenti Analogo pensiamo alla GUI come ad una scena teatrale il frame rappresenta il palcoscenico (infrastruttura) il pannello rappresenta lo sfondo della scena (schermo); ogni palcoscenico ha uno sfondo predefinito (content pane) al quale si possono sovrapporre altri sfondi per scene diverse i componenti sono gli oggetti di scena (sedie, tavoli, alberi...) che compongono la scena; possono essere aggiunti o rimossi dalla scena 9 Programmazione Grafica: Componenti >> Componenti Componenti Attenzione per la maggior parte dei componenti Swing esiste una controparte AWT java.awt.frame, java.awt.panel, java.awt.button, java.awt.label ecc. ma si tratta di componenti deprecati non è opportuno mischiare gli uni con gli altri useremo solo componenti Swing 10

Programmazione Grafica: Componenti >> Componenti Componenti Una caratteristica fondamentale di Swing tutti i componenti grafici sono contenitori ovvero possono ospitare al loro interno altri componenti (disegnati internamente) ovvio per JFrame e JPanel meno ovvio ma vero anche per JButton Gerarchia di ereditarietà complessa basata sulla classe java.awt.container 11 Programmazione Grafica: Componenti >> Componenti java.lang.object java.awt.component java.awt.container java.awt.window JComponent java.awt. Frame java.awt. Dialog JPanel JTextComponent JLabel JList JFrame JDialog AbstractButton JTextField JEditorPane JTable... JButton JMenuItem JToggleButton JTextArea JTree JMenu JCheckBox JRadioButton JMenuBar 12

java.awt.component Programmazione Grafica: Componenti >> Componenti void setvisible(boolean visible) void setname(string name) String getname() void setenabled(boolean enabled) boolean isenabled() void repaint() void setsize(int w, int h) void setlocation(int x, int y) void setbounds(int x, int y, int w, int h)... java.awt.container void addcomponent(component c) Component getcomponent(int n) int getcomponentcount() void remove(component c) void remove(int n) void setlayout(layoutmanager lm)... java.awt.window JComponent void pack() void toback() void tofront() void dispose()... void setopaque(boolean opaque) void setui(componentui newui) void setdoublebuffered(boolean db)... 13 Programmazione Grafica: Componenti >> Layout Layout Un problema centrale la disposizione dei componenti nel pannello I approccio: disposizione assoluta ovvero gestione manuale del layout per ciascun componente specifico la posizione dell angolo in alto a sinistra l altezza e la larghezza in pixel metodo setbounds(x, y, w, h) 14

Programmazione Grafica: Componenti >> Layout Layout Il sistema di coordinate relativo all area visibile del contenitore l angolo in alto a sinistra ha coordinate 0, 0 l ascissa cresce da sinistra a destra l ordinata cresce dall alto in basso (0, 0) JPanel jpanel = new JPanel(); JLabel jlabel = new JLabel(); jlabel.setbounds(20, 30, 50, 30); jpanel.add(jlabel); jpanel (20, 30) jlabel 50 30 15 Programmazione Grafica: Componenti >> Layout Layout Posizionamento assoluto: caratteristiche consente un controllo preciso sulla posizione è abbastanza semplice concettualmente ma un pò macchinoso (richiede di calcolare i pixel) alcune operazioni non sono banali (es: centrare nel frame un etichetta di testo) ma il problema fondamentale è il ridimensionamento del frame 16

Programmazione Grafica: Componenti >> Layout Layout Problema del posizionamento assoluto il componente non è adeguatamente ridimensionabile se il componente viene ridimensionato eccessivamente alcuni dei componenti scompaiono problema: adattamento a diverse risoluzioni metodo void setresizable(boolean resizable) di java.awt.frame 17 Programmazione Grafica: Componenti >> Layout Layout II approccio: gestore di layout Swing fornisce classi capaci di disporre gli elementi in un pannello secondo strategie Idea il programmatore non specifica la posizione il gestore di layout dispone i componenti secondo le proprie regole in caso di ridimensionamento, li ridispone in modo da cercare di mantenerli visibili 18

Programmazione Grafica: Componenti >> Layout Layout java.awt.flowlayout layout predefinito dei pannelli distribuisce gli elementi grafici uno dopo l altro orizzontalmente se non c è più spazio va a capo 19 Programmazione Grafica: Componenti >> Layout Layout java.awt.boxlayout distribuisce gli elementi grafici uno dopo l altro orizzontalmente oppure verticalmente parametro di asse: BoxLayout.X_AXIS (orizzontale), BoxLayout.Y_AXIS (verticale) 20

Programmazione Grafica: Componenti >> Layout Layout java.awt.borderlayout layout predefinito per i frame organizza l area del contenitore in 5 zone BorderLayout.NORTH, SOUTH, EAST, CENTER, WEST 21 Programmazione Grafica: Componenti >> Layout Layout java.awt.gridlayout organizza l area del contenitore in una matrice di N righe x M colonne ciascun elemento della matrice può ospitare un componente tutti gli elementi hanno la stessa dimensione 22

Programmazione Grafica: Componenti >> Layout Layout Layout complessi CardLayout: il contenitore può contenere componenti diversi in momenti diversi SpringLayout: layout a molle ; definisce vincoli tra i bordi dei componenti e quello del contenitore GridBagLayout: il più sofisticato in assoluto; variante del GridLayout in cui un componente può occupare varie celle 23 Programmazione Grafica: Componenti >> Layout Layout Gestori di layout: caratteristiche hanno il grande vantaggio di garantire nella maggior parte dei casi un corretto ridimensionamento sono però più complessi da usare lo sviluppatore non ha grande controllo sulla posizione dei componenti i layout avanzati sono potenti ma molto complessi 24

Programmazione Grafica: Componenti >> Layout Layout Combinare i layout un espediente frequente utilizzare diversi pannelli con layout diversi per ottenere la disposizione voluta pannello secondario con GridLayout contiene i bottoni pannello principale con BorderLayout contiene: - JTextField - pannello secondario 25 Programmazione Grafica: Componenti >> Creazione dell interfaccia alcuni passi standard I Passo: creazione del frame principale normalmente il componente fondamentale dell interfaccia estende JFrame es: class Principale extends JFrame {...} o lavora in associazione con JFrame es: class Principale { private JFrame frame; 26

Programmazione Grafica: Componenti >> Passi successivi inizializzazione dei componenti normalmente in un metodo chiamato inizializza() II passo: creazione dei menu creazione di un oggetto di tipo JMenuBar aggiunta della JMenuBar al frame aggiunta di vari JMenu alla JMenuBar aggiunta di varie JMenuItem ai JMenu 27 Programmazione Grafica: Componenti >> III passo: creazione del pannello due possibili approccio I possibilità: pannello predefinito del frame utilizzare direttamente il pannello di contenuto del frame ( content pane ) JPanel pannello = (JPanel)frame.getContentPane(); NOTA: il cast è necessario perchè getcontentpane() restituisce un riferimento a java.awt.container 28

Programmazione Grafica: Componenti >> frame principale estende JFrame frame secondario estende JDialog contentpane : JPanel contentpane : JPanel componente (es: JButton) componente (es: JLabel) componente (es: JButton) componente (es: JLabel) componente (es: JPanel) componente (es: JLabel) 29 Programmazione Grafica: Componenti >> II possibilità: pannello personalizzato creare un nuovo JPanel e aggiungerlo al pannello di contenuto utile se successivamente è necessario cambiare il contenuto del pannello es: per produrre uno schermo diverso nello stesso frame JPanel pannello = new JPanel(); frame.getcontentpane().add(pannello); 30

Programmazione Grafica: Componenti >> frame principale estende JFrame frame secondario estende JDialog contentpane : JPanel contentpane : JPanel schermo 1 : JPanel schermo 2 : JPanel componente (es: JButton) componente (es: JTextField) componente (es: JButton) componente (es: JPanel) componente (es: JLabel) componente (es: JLabel) 31 Programmazione Grafica: Componenti >> IV passo scelta della strategia di posizionamento (assoluto/gestore di layout) nel caso di posizionamento assoluto è necessario rimuovere il gestore di layout predefinito eseguendo il metodo setlayout(null) da quel momento in poi tutti i componenti devono essere disposti in modo assoluto 32

Programmazione Grafica: Componenti >> V passo creazione dei diversi componenti che compongono l interfaccia (es: JButton, JLabel, JTextField...) e aggiunta al pannello di ognuno, gestendone il posizionamento eventualmente utilizzando pannelli aggiuntivi 33 Programmazione Grafica: Componenti >> VI passo visualizzazione del frame chiamata al metodo setvisible(true) visualizza il frame nell angolo in alto a sinistra dello schermo riposizionabile con setlocation(x, y) Ma... un frame per impostazione predefinita ha dimensione 0x0 pixel 34

Programmazione Grafica: Componenti >> Stabilire la dimensione del frame I possibilità: utilizzare il metodo setsize(<larghezza>, <altezza>) approccio tipico con posizionamento assoluto II possibilità: chiamata al metodo pack() per aggiustare la dimensione al minimo indispensabile approccio tipico con gestore di layout 35 Programmazione Grafica: Componenti >> Un dettaglio importante è necessario stabilire come gestire l evento di chiusura del JFrame per impostazione predefinita, chiudendo la finestra questa viene nascosta Un impostazione più naturale uscire dall applicazione 36

Programmazione Grafica: Componenti >> Strategia di chiusura del frame metodo setdefaultcloseoperation() costanti di JFrame (ereditate da WindowConstants) HIDE_ON_CLOSE (valore predefinito) EXIT_ON_CLOSE (valore normale ) DO_NOTHING_ON_CLOSE DISPOSE_ON_CLOSE 37 Programmazione Grafica: Componenti >> Un Metodo Tipico di Inizializzazione public class Principale extends JFrame { public void inizializza() { this.setdefaultcloseoperation(exit_on_close); this.settitle( Frame Principale"); // altre operazioni (aggiunta di pannelli, componenti...) } } this.setlocation(300, 300); this.pack(); // oppure: this.setsize(200, 200); this.setvisible(true); 38

Programmazione Grafica: Componenti >> VII passo creazione del frame nel main attenzione al blocco di codice necessario public static void main(string[] args){ SwingUtilities.invokeLater(new Runnable() { public void run() { Principale principale = new Principale(); principale.inizializza(); } } ); definizione di classe interna anonima che implementa } java.lang.runnable (riguarda l utilizzo dei thread) ATTENZIONE al codice del main 39 Programmazione Grafica: Componenti >> Editor Grafico dell IDE Editor Grafico dell IDE Il processo di sviluppo dell interfaccia è abbastanza macchinoso Un utile supporto editor grafico dell interfaccia fornito dall IDE ( GUI Editor ) consente di disporre graficamente i componenti dell interfaccia e di definirne rapidamente le proprietà 40

Programmazione Grafica: Componenti >> Editor Grafico dell IDE Editor Grafico dell IDE Funzionamento tipico dell editor all avvio fornisce uno spazio vuoto corrispondente al frame da creare e una palette di componenti (rappresentati da icone) da cui scegliere quelli da disporre è possibile trascinare l icona dei componenti nello spazio del frame e poi stabilirne le proprietà attraverso una finestra apposita 41 Programmazione Grafica: Componenti >> Editor Grafico dell IDE Editor Grafico dell IDE Funzionamento tipico dell editor (cont.) le scelte dell utente vengono salvate in un file di metainformazioni l IDE genera automaticamente il codice Java per la disposizione degli elementi Attenzione non è possibile intervenire direttamente sul codice generato perchè le modifiche andrebbero perdute 42

Programmazione Grafica: Componenti >> Editor Grafico dell IDE Editor Grafico dell IDE Vantaggio il ciclo di sviluppo si accorcia decisamente Svantaggio poco controllo sul codice generato Un esempio l editor grafico di NetBeans >> convertitore con NetBeans (interfaccia) sviluppiamo l interfaccia di un convertitore di voti da 30mi a 110mi 43 Programmazione Grafica: Componenti >> Editor Grafico dell IDE Editor Grafico dell IDE Struttura della classe generata estende JFrame (ma è possibile anche generare JPanel) tutti i componenti utilizzati sono proprietà della classe i componenti vengono aggiunti nel metodo di inizializzazione il main contiene il codice per la gestione dei thread e visualizza il frame 44

Programmazione Grafica: Componenti >> Editor Grafico dell IDE Editor Grafico dell IDE >> convertitore con NetBeans (logica applicativa) Gestione degli eventi in questa forma semplificata, per ogni evento aggiunto ad un componente, l IDE genera un metodo attraverso il quale è possibile specificare le operazioni da svolgere in corrispondenza dell evento Un evento importante evento di azione (ActionEvent) 45 Programmazione Grafica: Componenti >> Editor Grafico dell IDE Editor Grafico dell IDE Nota l applicazione creata viola tutte le regole architetturali viste fino a questo punto perchè interfaccia, controllo e logica applicativa sono tutte concentrate in un unica classe si tratta però di un idioma abbastanza utilizzato nella programmazione Swing (>>) 46

Programmazione Grafica: Componenti >> Sommario Riassumendo Componenti Layout Editor Grafico dell IDE 47