maggio 2004 Stefano Sanna - gerda@crs4.it



Documenti analoghi
L interfaccia grafica in Java

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

Programmazione Java: Interfacce grafiche (GUI)

Corso sul linguaggio Java

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

Gestione degli eventi in Java

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

Il controllo della visualizzazione

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

Progettazione : Design Pattern Creazionali

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

Alessandro De Luca. Lezione, 13 maggio 2015

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

Il calendario di Windows Vista

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

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

Corso Eclipse. Prerequisiti. 3 Window Builder

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Interazioni col mondo: eventi

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

L interfaccia grafica con Java

Il calcolatore - Applicazioni

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

manuale utente per Viabizzuno online

Guida all uso di Java Diagrammi ER

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Android. Implementare una interfaccia utente

DOCUMENTO ESERCITAZIONE ONENOTE. Utilizzare Microsoft Offi ce OneNote 2003: esercitazione rapida

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Gestione Rapporti (Calcolo Aree)

Gestione Risorse Umane Web

Manuale per i redattori del sito web OttoInforma

CdL in Medicina Veterinaria - STPA AA

Microsoft Office XP. dott. ing. Angelo Carpenzano. La suite Microsoft Office XP

MANUALE D USO DELLA PIATTAFORMA ITCMS

Approccio stratificato

Registratori di Cassa

Manuale Utente Amministrazione Trasparente GA

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

Guida all'uso del CMS (Content Management System, Sistema di Gestione dei Contenuti)

SOMMARIO... 3 INTRODUZIONE...

STRUMENTI DI PRESENTAZIONE MODULO 6

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

MANUALE PORTALE UTENTE IMPRENDITORE

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

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

Capitolo 4 Pianificazione e Sviluppo di Web Part

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

L amministratore di dominio

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

Manuale Servizio NEWSLETTER

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

STRUMENTI PER L ACCESSIBILITÀ DEL COMPUTER.

PrometeoQualità. Manuale Documenti

Programmazione Orientata agli Oggetti in Linguaggio Java

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Java: Compilatore e Interprete

IRSplit. Istruzioni d uso 07/10-01 PC

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

1. Le macro in Access 2000/2003

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Java Interfaccia Grafica

Word è un elaboratore di testi in grado di combinare il testo con immagini, fogli di lavoro e

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo

CONTENUTI 1. INTRODUZIONE CONCETTI BASICI SU EQUINOX CMS XPRESS ACCESSO A EQUINOX CMS XPRESS PAGINA D INIZIO...

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Guida alla registrazione on-line di un DataLogger

Tale attività non è descritta in questa dispensa

Software standard Alpi Label Ver

Mon Ami 3000 Centri di costo Contabilità analitica per centri di costo/ricavo e sub-attività

SERVICE BROWSER. Versione 1.0

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

Corso di Informatica

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

EasyPrint v4.15. Gadget e calendari. Manuale Utente

Gestione Turni. Introduzione

Componenti di una applicazione. Un programma applicativo è strutturato come un insieme organizzato di tre componenti funzionali:

WorkFLow (Gestione del flusso pratiche)

Relazioni tra tabelle

Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11

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

Manuale LiveBox WEB ADMIN.

SPRING SQ COMUNICAZIONE OPERAZIONI IVA NON INFERIORI A 3000 EURO PER L ANNO 2011

Programmazione ad Oggetti. Java Parte I

Informatica (Sistemi di elaborazione delle informazioni)

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

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

Sviluppo di Interfacce Grafiche in Java

P a g i n a 1 MANUALE OPERATIVO CIA COMINUCA

LA FINESTRA DI GOAL (SCHERMATA PRINCIPALE E PANNELLO DEI COMANDI)

4. Un ambiente di sviluppo per Java

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

MANUALE ESSE3 Gestione Registro delle lezioni

Database 1 biblioteca universitaria. Testo del quesito

MANUALE PER CONSULTARE LA RASSEGNA STAMPA VIA WEB

Mon Ami 3000 Produzione base Produzione articoli con distinta base e calcolo dei fabbisogni

Mon Ami 3000 Multimagazzino Gestione di più magazzini fisici e/o logici

Comando STAMPA. Attiva la finestra di dialogo nella quale vengono impostati i parametri per ottenere tavole stampate:

Transcript:

java.awt awt.* Abstract Window Toolkit maggio 2004

Agenda Java e interfacce grafiche Caratteristiche di AWT Design e implementazione di interfacce grafiche Panoramica dei componenti disponibili Primitive grafiche e modello ad eventi Esempi di codice Bibliografia Conclusioni

Java

Due approcci per le UI in Java Componenti heavyweight Sono basati su componenti forniti dal sistema operativo (scritti in C/C++): le prestazioni e l'integrazione estetica con le altre applicazioni è massima L'applicazione perde portabilità ove non è disponibile la libreria Componenti lightweight Sono basati sull'assegnazione di una area di disegno sul desktop, dove la VM può tracciare i componenti in piena libertà: le prestazioni non sono eccezionali ma la portabilità è assicurata!

AWT e Swing AWT: Abstract Window Toolkit Nasce con le prime versioni di Java (1.0.2 e 1.1) Definisce un insieme minimo di componenti nativi comuni a tutte le UI (Win32, X-Window, MacOS, SymbianOS ) Swing (JFC, Java Foundation Classes) Disponibili dalla versione 1.2 Definisce un set di componenti complessi e personalizzabili indipendenti dalla piattaforma

Altre librerie: SWT e LWVCL SWT: Standard Widget Toolkit Utilizza componenti nativi come AWT, ma è basata su un set molto ricco E' utilizzata sull'ide Eclipse LWVCL: Lightweight Visual Comp Library E' una soluzione full-java (come Swing) per sistemi mobili quali palmari e cellulari Fornisce un set molto ricco di componenti e garantisce ottime prestazioni in termini di velocità di elaborazione

Abstract Window Toolkit E un insieme di classi per la creazione di interfacce grafiche elementari Contiene una librerie di componenti heavyweighted: ogni componente ha il suo corrispondente nel sistema operativo host, a cui la VM delega la gestione del componente vero e proprio Permette di creare componenti personalizzati attraverso il controllo diretto delle funzioni di disegno e di gestione dei dispositivi di input (mouse, tastiera )

Abstract Window Toolkit Coerentemente con la vocazione multipiattaforma di Java, i componenti AWT e le applicazioni sviluppate con questi cambiano il loro aspetto a seconda del sistema operativo in cui sono eseguite Questa caratteristica da una parte limita le GUI in Java 1.1 (sono disponibili solo i componenti comuni a tutte le interfacce grafiche), dall altro permette un vero sviluppo indipendente dalla piattaforma!

GUI in Java: il codice L interfaccia grafica è costruita all interno del codice sorgente: non esistono i resource-file! import java.awt.*; public class HelloGUI extends Frame { private Label hellolabel = new Label("Hello!"); } public HelloGUI() { this.settitle("hello!"); this.add(hellolabel); this.pack(); } public static void main(string[] args) { HelloGUI myhello = new HelloGUI(); myhello.show(); }

Object Oriented Le interfacce grafiche sono costituite da oggetti e dunque la loro implementazione in un linguaggio ad oggetti è abbastanza naturale Creare un nuovo oggetto grafico significa creare una istanza della classe corrispondente Java è completamente ad oggetti e la costruzione di interfacce grafiche si integra perfettamente con la filosofia del linguaggio

Creazione di interfacce grafiche Creare interfacce grafiche significa essenzialmente: 1.Istanziare e assemblare i componenti visuali con cui interagisce l utente 2.Associare i dati dell applicazione ai componenti visuali 3.Intercettare gli eventi dei componenti visuali e compiere opportune azioni sui dati dell applicazione

Creazione di interfacce grafiche 1.Istanziare e assemblare i componenti visuali con cui interagisce l utente: Stabilire quali sono i componenti necessari a visualizzare i dati dell applicazione (campi di testo, valori booleani, liste ) Organizzare i componenti in pannelli, finestre, dialoghi Verificare la usabilità dell interfaccia

Creazione di interfacce grafiche 2.Associare i dati dell applicazione ai componenti visuali: Fare in modo che ad una qualsiasi variazione dei dati (modello) dell applicazione corrisponda un aggiornamento di quanto visualizzato dall interfaccia grafica Prevedere opportuni raggruppamenti e/o separazioni per utilizzare al meglio i (pochi) componenti disponibili

Creazione di interfacce grafiche 3.Intercettare gli eventi dei componenti visuali e compiere opportune azioni sui dati dell applicazione: Registrare la propria applicazione in ascolto degli eventi di interesse (pressione di un pulsante, uso del mouse, chiusura di una finestra ) Modificare i dati secondo le azioni compiute dall utente sull interfaccia grafica

Componenti elementari Frame, Window, Dialog Panel e Layout Manager Menubar, Menu, MenuItem Button e Label TextField e TextArea List e Choice (ComboBox) CheckBox e CheckBoxMenuItem Canvas

java.awt.frame E la classe che permette di creare finestre con un bordo, una barra del titolo, una barra di menù (opzionale), e un area dove assemblare i componenti dell interfaccia grafica E, nella maggior parte dei casi, la finestra principale dell applicazione da cui si creano tutte le altre finestre (vedi: Window e Dialog)

Window e Dialog Le Window sono finestre senza bordo e menù, utilizzate per splash screen e per aree del quale il programmatore vuole controllo completo Le Dialog sono finestre (eventualmente modali) con il quale l'applicazione richiede l'interazione esplicita con l'utente: avvisi, inserimento di dati, conferme...

java.awt.panel Le istanze di questa classe sono contenitori per altri componenti E possibile assegnare una logica di organizzazione dei componenti all interno di un pannello a seconda delle esigenze di visualizzazione Le interfacce non banali sono costituite da numerosi pannelli annidati, ciascuno contenente un certo gruppo di componenti elementari o complessi

Layout Manager I LayoutManager sono degli oggetti particolari che gestiscono il posizionamento e dimensionamento dei componenti all interno dei contenitori (Frame, Window, Dialog, Panel ). Seguendo la filosofia di Java (indipendente dalla piattaforma!), i LayoutManager permettono di stabilire una posizione logica ( di massima, potremmo dire) dei componenti, delegando poi alla specifica piattaforma il reale tracciamento dei componenti.

Layout Manager FlowLayout Dispone i componenti assegnando a ciascuno le dimensioni preferenziali BorderLayout Divide il container in 5 regioni (vedi screenshot) CardLayout Crea uno stack di componenti che vengono visualizzati alternativamente

Layout Manager GridLayout Crea una griglia (n*m, con n e m assegnati) in cui dispone i componenti assegnando a ciascuno le dimensioni preferenziali GridBagLayout In assoluto il layout più potente e complesso; offre una organizzazione a griglia come il GridLayout, ma consente maggiore controllo sulla posizione e dimensione dei componenti

java.awt.flowlayout È il layout di impostato di default Dispone i componenti in sequenza assegnando a ciascuno le dimensioni preferenziali

java.awt.borderlayout È uno dei layout più utilizzati per l organizzazione di componenti su finestre di dimensione variabile.

java.awt.cardlayout Mostra un componente per volta Utile per creare interfacce tipo pannello di configurazione VISTA

Layout Manager E comunque possibile fare a meno dei Manager e specificare esattamente posizione e dimensione di ciascun componente. Tale scelta è consigliabile solo con componenti custom (e dunque non dipendenti dalla piattaforma) L uso dei manager di layout è comune ad altri linguaggi e ambienti di sviluppo, così pure la tecnica dei pannelli annidati (VisualBasic, Delphi )

Menubar, Menu, MenuItem E un insieme di classi che permette di creare menù per i Frame e popup-menù per gli altri componenti di AWT. Menubar: è il contenitore delle voci di menù posto immediatamente sotto la barra del titolo Menu: è la classe che individua le voci visibili su una menubar MenuItem: è la classe che permette di creare voci di menù selezionabili dall utente.

Button e Label La classe Button permette di creare pulsanti da azionare con il mouse o con la tastiera Le istanze di Label sono oggetti per la visualizzazione di testo non editabile dall utente. Possono essere utilizzati per finestre informative o indicazioni di supporto agli altri componenti (ad esempio, per descrivere il contenuto di una certa lista di elementi)

TextField e TextArea E la classe che permette di creare oggetti attraverso i quali l utente può digitare stringhe di testo Permette di gestire eventi di provenienti dalla tastiera (ad esempio, per offrire suggerimenti all utente durante la digitazione) Per l inserimento di testo su più linee è disponibile il componente TextArea, che permette di gestire anche le barre di scorrimento

List e ComboBox Permette di mostrare una lista di elementi di testo Offre la possibilità di aggiungere barre di scorrimento, di selezionare gli elementi singolarmente o a gruppi La versione Swing (JList) permette di visualizzare una lista di componenti grafici arbitrari (contenenti testo e immagini) La classe Chioce (ComboBox) permette la creazione di menù a tendina

CheckBox e CheckBoxMenuItem La classe CheckBox permette di rappresentare valori booleani true/false attraverso check box (selettori a scelta multipla) o radio button (selettori a scelta mutuamente esclusiva) I CheckBoxMenuItem permettono di gestire valori booleani attraverso menù dei Frame.

java.awt.canvas E il componente con cui è possibile disegnare in una regione dello schermo attraverso primitive grafiche quali punti, linee, poligoni, testo, immagini Attraverso la riscrittura di un metodo (paint) e le funzionalità della classe Graphics ottenuta dal framework è possibile creare effetti grafici personalizzati Numerose librerie permettono di gestire i più diffusi formati grafici per la visualizzazione di immagini

Primitive grafiche Ogni volta che il sistema grafico deve ridisegnare l area del componente viene invocato il metodo paint(). Attraverso questo metodo il sistema fornisce una istanza di Graphics su cui eseguire le operazioni di disegno. Il Canvas, oltre ad un area di disegno, mette a disposizione tutta l infrastruttura per la gestione degli eventi associati al componente: mouse, tastiera, interazione con gli altri componenti. Questo permette di realizzare componenti personalizzati.

Primitive grafiche An instance of Graphics import java.awt.*; public class MyComponent extends Canvas { } public void paint(graphics g) { g.drawline(..) } L utente sposta la finestra

Event Driven Nello sviluppo di applicazioni con interfaccia utente a linea di comando vi era un unico flusso all interno del programma (ricordate scanf o readln?) Le interfacce grafiche permettono all utente di selezionare diversi dispositivi di input indipendenti (tastiera, mouse ) che agiscono su numerosi componenti dell interfaccia stessa: non esiste più un unico flusso all interno del programma, non si può rimanere in attesa di uno specifico segnale

Event Driven Le nuove interfacce grafiche hanno portato alla definizione di un nuovo modello di interazione con l utente: gli eventi Non vi sono routine bloccanti che controllano i dispositivi di input (come scanf in C ): il sistema operativo nasconde tutta la gestione dei dispositivi di input L applicazione definisce una interfaccia con cui il sistema operativo comunica in modo asincrono i comandi (pulsante premuto, testo digitato, finestra ridimensionata )

Event Sequence Diagram

Event Driven import java.awt.*; Sistema operativo public class HelloGUI extends Frame { } private Label hellolabel = new Label("Hello!"); public HelloGUI() { } this.settitle("hello!"); this.add(hellolabel); this.pack(); public void actionperformed(actionevent ae) { } ************ ********** Gli eventi passano da un livello all altro in maniera trasparente per l utente: Window Message in Win32 Native method nella JVM Pure Java dal pulsante in poi

Event Driven connect() Event Source Listener 1 Listener 2 Listener n-1 Listener n showwindow() starttime()

MouseMotionListener WindowListener Virtual Machine ActionListener Frame MouseListener interface class

Listener ActionListener intercetta eventi di azioni (pulsanti, menù, pressione del tasto INVIO su un TextField) WindowListener intercetta gli eventi legati alla gestione di Frame, Window e Dialog (visualizza/nascondi) MouseListener intercetta gli eventi del mouse (entrata/uscita in una certa zona, pressione dei tasti ) MouseMotionListener: intercetta il movimento (semplice o drag)

Listener Vi sono altri tipi di listener per gestire gli eventi della tastiera, di digitazione testo, del ciclo di vita dei componenti, del focus tra i componenti Ciascun tipo di listener è specializzato per un ben determinato tipo di eventi. Questi, a loro volta, sono destinati a notificare solo un ben determinato tipo di azione fatta sull interfaccia grafica

Domande?

Mano al codice!!! e alla documentazione!!! Le classi sono contenute all interno dei package java.awt, java.awt.event, java.awt.image, java.awt.datatransfer, java.applet. Per scrivere delle buone interfacce grafiche sarebbe opportuno avere una buona conoscenza del linguaggio e della programmazione ad oggetti (polimorfismo, classi inner, interfacce, design pattern ).

Componenti disponibili Button, Canvas, Checkbox, CheckboxGroup, CheckboxMenuItem, Choice, Dialog, FileDialog, Font, Frame, Image, Label, List, Menu, MenuBar, MenuItem, Panel, ScrollPane, TextArea, TextField, Window

Una semplice finestra import java.awt.*; public class SimpleFrame1 extends Frame { } private Label titlelabel = new Label("Simple Frame"); public SimpleFrame1() { this.setlayout(new FlowLayout()); this.settitle(titlelabel.gettext()); this.add(titlelabel); this.pack(); this.show(); } public static void main(string[] args) { new SimpleFrame1(); }

Aggiungiamo un menù... public class SimpleFrame2 extends Frame { private Label titlelabel = new Label("Simple Frame"); private MenuBar menubar = new MenuBar(); private Menu filemenu = new Menu("File"); private MenuItem exitmenuitem = new MenuItem("Exit"); public SimpleFrame2() { this.setmenubar(menubar); menubar.add(filemenu); filemenu.add(exitmenuitem); this.setlayout(new FlowLayout()); this.settitle(titlelabel.gettext()); this.add(titlelabel); this.pack(); this.show(); }

MouseMotionListener WindowListener Virtual Machine ActionListener Frame MouseListener interface class

Gestire gli eventi PRODUCER Registers itself as listener CONSUMER LISTENERS Invokes listener s methods actionperformed

Gestire gli eventi Ciascun producer dispone di una lista di listener (ascoltatori) interessati a gestire gli eventi prodotti dal producer stesso Per poter ricevere notifica di nuovi eventi i listener devono implementare l interfaccia relativa ad una specifica classe di eventi e registrarsi presso il producer Il producer, al manifestarsi di un evento, invocherà i metodi dell interfaccia dei listener inviando come parametri degli EventObject specifici per il tipo di evento

Gestire gli eventi I passi nella realizzazione del modello ad eventi: Creazione di un listener per il tipo di evento di interesse (ActionListener, MouseListener, MouseMotionListener, TextListener, ComponentListener ) attraverso l implementazione di una opportuna interfaccia Registrazione del listener appena creato nella lista ascoltatori del producer

Gestire gli eventi... implements ActionListener... public void actionperformed(actionevent ae) { } if (ae.getsource() == exitmenuitem) { } System.exit(0); exitmenuitem.addactionlistener(this); La classe dichiara di voler (saper ) gestire ActionEvent e implementa il metodo actionperformed La classe registra se stessa quale ascoltatore degli eventi del menù

Pannelli annidati BorderLayout FlowLayout

Componenti personalizzati Grazie all architettura object oriented è semplice sviluppare componenti personalizzati estendendo quelli esistenti o creandone di completamente nuovi Possiamo ereditare dalla classe Component tutta la gestione del mouse, della tastiera e degli altri eventi correlati senza la necessità di scrivere codice nativo Se scritti in modo sapiente (!) i nuovi componenti si integreranno perfettamente con l infrastruttura AWT

Bibliografia Java AWT Reference John Zukowski O'Reilly 1997 Il libro non è più in stampa, ma l'editore mette a disposizione gratuitamente i file PDF di tutti i capitoli: http://www.oreilly.com/catalog/javawt/book/index.html

Conclusioni Java AWT è uno strumento rapido e multipiattaforma per la creazione di interfacce semplici Lo sviluppo di applicazioni complesse richiede l'uso di librerie più complete (ad esempio, Swing o LWVCL) AWT è una buona palestra per imparare il modello ad eventi!!!

Grazie... :-)