Java Interfaccia Grafica

Похожие документы
Java Interfaccia Grafica

Corso sul linguaggio Java

Gestione degli eventi in Java

L interfaccia grafica in Java

interfacce ed eventi intercettare il mouse ed altri eventi

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

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

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

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

Interazioni col mondo: eventi

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

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

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

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

! Programmazione strutturata. ! OO: TDA, scambio messaggi, eredità, polimorfismo, OO in Java. ! Rassegna API. ! Documentazione Javadoc delle API

L interfaccia grafica con Java

Alessandro De Luca. Lezione, 13 maggio 2015

Introduzione al package grafico Swing

TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet

Programmazione Java: Interfacce grafiche (GUI)

APPLICAZIONI & APPLET

maggio 2004 Stefano Sanna - gerda@crs4.it

Grafico della parabola

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

Gestione dell interattività: gli eventi

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

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

LPR 2005/ 2006 Lezione n.9. Elementi di grafica per lo svolgimento del progetto Double Buffering Caricamento delle immagini Gestione degli eventi

Programmazione in rete e laboratorio

Laboratorio di IUM. Lezione 3. La gestione degli eventi. Di Blasi Gianpiero - D.M.I. - Università di Catania

Corso Eclipse. Prerequisiti. 3 Window Builder

Programmazione Orientata agli Oggetti in Linguaggio Java

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

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

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

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

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Sviluppo di Interfacce Grafiche in Java

Android. Implementare una interfaccia utente

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Eventi e listener per i componenti grafici

Modulo 4: Ereditarietà, interfacce e clonazione

Capitolo 4 Pianificazione e Sviluppo di Web Part

SERVIZIO DI MESSAGGISTICA ALL UTENTE. Manuale per l operatore

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

L amministratore di dominio

Creare un sito Multilingua con Joomla 1.6

Gestione di eventi ed interfacce utente grafiche

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

MANUALE D USO MANUALE D USO

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

Progettazione : Design Pattern Creazionali

4. Un ambiente di sviluppo per Java

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Strumenti per la programmazione

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Java: la libreria delle classi

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

Modulo 3 - Elaborazione Testi 3.5 Stampa unione

1. Il Client Skype for Business

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:

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

Cosa è un foglio elettronico

ALICE PRATICHE EDILIZIE ON LINE MANUALE D'USO REL. 3.2

SOMMARIO. Programmazione orientata agli eventi. Programmazione orientata agli eventi. Programmazione orientata agli eventi

GESTIONE DEI PROCESSI

Introduzione al linguaggio Java. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++.

Guida. Macchina Scratch

istruzioni per l uso

YOUTUBE: UN CANALE PER LA PARTECIPAZIONE

Guida all utilizzo della Piattaforma per la staffetta di Scrittura Creativa Manuale pratico per docenti e tutor

Progetto SOLE Sanità OnLinE

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

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

Gestione delle Presenze WorkFlow Manuale Operativo

Prova di Laboratorio di Programmazione

Java: Compilatore e Interprete

Guida operativa. My Legal Corner. BestSoft SOFTWARE IN SANITÀ

Guida a Theblog.net. cioè il sito è raggiungibile da due indirizzi, ma i contenuti sono gli stessi.

Esercitazione n 4. Obiettivi

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

La struttura dati ad albero binario

Транскрипт:

Java Interfaccia Grafica Testi di consultazione: a) core Java 1.1 (Volume I Fundamentals) Cay S. Horstmann, Gary Cornell, Prentice Hall, 1997. b) Java 1.2 Unleashed, Jamie Jaworski, Sams Publishing, 1998. c) Programmazione di applicazioni grafiche in Java, S. Mazzanti e V. Milanese, 2006. Un programma interattivo classico controlla l'interazione con l'utente quando il flusso di controllo lo esige. Con una interfaccia grafica (GUI) normalmente l'applicazione attende che l'utente generi eventi agendo sull'interfaccia (azioni e movimenti del mouse, bottoni, ecc...) Si può parlare di interazione guidata dagli eventi, a cui corrispondono delle opportune procedure/funzioni/metodi per gestirli. Un sistema operativo che supporti un'interfaccia grafica deve controllare continuamente l'ambiente per verifica se sono avvenute azioni (ad esempio 'la pressione di un tasto sulla tastiera' o un 'click' sul mouse), che generano eventi corrispondenti. Tali eventi vengono quindi comunicati all'applicazione che li gestisce. Vi sono vari approcci.

Approcci classici di alto e basso livello Approccio stile Visual Basic Corrispondenza diretta eventi-procedure (event procedures) Si scrive codice per manipolare ciascun evento e si mette tale codice nella corrispondente procedura. Ad esempio: per HelpButton si scrive la procedura HelpButton_Click per gestire l'evento 'click' del mouse. Approccio stile C: Un unico ciclo che controlla continuamente la coda degli eventi, con un enorme 'case' per testare tutte le possibilità. Per ogni evento può essere invocata la routine opportuna.

Java e gli altri L'approccio del Visual Basic consente di trattare una classe limitata di Eventi, quelli previsti dal linguaggio, però il codice corrispondente è molto più conciso, semplice ed elegante. L'approccio del C permette una maggiore flessibilità e di trattare più eventi. Il codice Java deve essere indipendente dalla piattaforma, quindi definisce un modello astratto che contiene i concetti comuni ai vari ambienti grafici. Di conseguenza si pone in una posizione intermedia come flessibilità e semplicità tra l'esempio del Visual Basic e del C. Package per la gestione dell'ambiente grafico: AWT (Abstract Window Toolkit). java.awt (4 sotto-package: java.awt.datatransfer, java.awt.event, java.awt.image, java.awt.peer). 105 classi, 22 interfacce

Java 1.2 Extended JFC (Java Foundation Classes) JFC 1.1 ---- AWT, SWING, JAVA 2D, Drag and Drop, Accessibility SWING: usa AWT per interfacciarsi col sistema di finestre sottostanti nativo offre nuove componenti (rispetto all'awt) ri-implementa componenti AWT in codice Java 100% puro peggiore performance per la stessa componente aspetto migliore (look and feel) maggiore flessibilità SWING incluse in AWT incluso in JFC JDK 1.2 include compiler JIT

Package AWT La classe principale del package è component, che rappresenta un oggetto grafico che ha una posizione ed una dimensione sullo schermo, su cui è possibile disegnare e che può ricevere 'azioni' dall'utente Component è una classe astratta (circa 120 metodi). Rappresenta gli elementi di base dell'interfaccia grafica. Una istanza di component può essere visualizzata solo se contenuta in un oggetto visibile. Esempi di componenti: List, Scrollbar, TextArea, TextField, Choice, Button, Label... Tutti i Container Container è un'altra classe astratta che deriva da Component. Può contenere componenti. Notiamo che un container è anche un componente. In genere un container prevede le funzionalità per la gestione degli eventi e dello scambio di informazioni tra i componenti. Esempi di Container: Applet, Frame, Window, Dialog, Panel

Il modello astratto (Java 1.1) Definiamo come sorgente di un evento (Event source) una qualunque componente grafica su cui l'utente possa svolgere delle azioni (ad esempio un bottone o una lista di scelte in un menu) Il programmatore decide come gli eventi generati da azioni utente sulle componenti grafiche dell'interfaccia vengono gestiti da opportuni oggetti delegati a gestire (o ascoltare) il verificarsi di un determinato evento. Qualsiasi oggetto (anche più di uno) può essere delegato ad ascoltare (e quindi gestire) il verificarsi di un determinato evento. Per questo motivo si parla di event delegation model. Notiamo che è più flessibile di Visual Basic, in cui l'ascoltatore è fissato a priori, però richiede di scrivere più codice. I vantaggi rispetto a C sono ovvi, ad esempio il fatto che l'utente non vede la coda di sistema degli eventi. Ovviamente un programma C potrebbe gestire più eventi di quelli trattabili in Java.

Modello con delega della gestione eventi Un oggetto ascoltatore è una istanza di una classe che implementa la interfaccia detta listener interface Un oggetto ascoltatore deve comunque essere delegato per poter gestire un evento generato da una componente grafica. Un oggetto delegato riceverà un messaggio (notifica) quando si verifica un evento. Il messaggio attiva il corrispondente metodo della listener interface. L'oggetto ascoltatore viene delegato mediante una linea di codice del tipo seguente: eventsourceobject.addeventlistener(eventlistenerobject) Esempio: Button b = new Button( clear ); b.addactionlistener(oggdeleg); In questo modo viene inviato un messaggio a 'OggDeleg' ogni volta che si verifica un evento (cioè un'azione) su Button. Un evento su un bottone può essere un 'click' sul bottone. L'oggetto delegato ('OggDeleg') come ascoltatore deve implementare l'interfaccia opportuna, quindi in questo caso ActionListener Il metodo actionperformed di tale interfaccia riceve come parametro un oggetto di tipo ActionEvent, che permette all'ascoltatore di avere informazioni ulteriori sull'evento verificatosi.

Alcuni esempi di programmazione esempi di applicazioni standalone (console grafica) esempi di applets Gestione Finestre

import java.awt.*; public class FinestraVuota extends Frame { public static void main (String argv[]) { FinestraVuota ist = new FinestraVuota(); System.out.println ("Esco da main"); FinestraVuota () { setbounds(30, 10, 300, 200); settitle (getclass().getname()); setvisible(true); Sostanzialmente disegna un rettangolo di 300x200 pixel sulla console grafica con un vertice di coordinate 30 e 10 Infine scrive sulla console grafica la scritta Esco da main. Questo è un esempio di creazione di una finestra, senza gestione degli eventi, e quindi senza interazione con l'utente.

import java.awt.*; import java.awt.event.*; public class Eventi extends Frame { Ascoltatore asc = new Ascoltatore(); public static void main (String argv[]) { Eventi ist = new Eventi(); Eventi () { setbounds(30, 10, 300, 200); settitle (getclass().getname()); setvisible(true); addwindowlistener(asc); class Ascoltatore implements WindowListener { public void windowclosed (WindowEvent evt) { System.out.println (evt); System.exit(0); public void windowclosing (WindowEvent evt) { evt.getwindow().dispose(); System.out.println (evt); public void windowdeiconified (WindowEvent evt) { System.out.println (evt); public void windowiconified (WindowEvent evt) { System.out.println (evt); public void windowopened (WindowEvent evt) { System.out.println (evt); public void windowactivated (WindowEvent evt) { System.out.println (evt); public void windowdeactivated (WindowEvent evt) { System.out.println (evt); java.awt.event.windowevent[window_deactivated] on frame0 java.awt.event.windowevent[window_iconified] on frame0 java.awt.event.windowevent[window_deiconified] on frame0 java.awt.event.windowevent[window_closing] on frame0 java.awt.event.windowevent[window_closed] on frame0

Listener interfaces e gerarchia degli eventi ActionListener AdjustementListener ComponentListener FocusListener ItemListener KeyListener MouseListener MouseMotionListener TextListener WindowListener Non tutti gli eventi nella gerarchia di sistema sono utili per l'utente. Quelli che sono inviati agli ascoltatori sono: ActionEvent AdjustmentEvent ComponentEvent FocusEvent ItemEvent KeyEvent MouseEvent TextEvent WindowEvent

Eventi ed Oggetti Eventi Gli eventi possono essere di diverso tipo, ma comunque condividono alcune caratteristiche. Pertanto le classe degli eventi sono rappresentate in modo gerarchico e seguono le usuali regole dell'inheritance. La classe radice si chiama java.util.eventobject. La sola caratteristica comune condivisa da tutti gli eventi è un oggetto sorgente. Pertanto nella classe radice EventObject troviamo il seguente metodo: public Object getsource();

Controlli grafici un contenitore permette di organizzare (contenere in modo ordinato) un insieme di componenti grafiche e di presentarle visualmente in modo controllato. È possibile aggiungere componenti ad un contenitore mediante il metodo Component add(component) e specificare un gestore della organizzazione all'interno del contenitore mediante il metodo public void setlayout(layoutmanager mgr)

APPLET Un applet si crea come sottoclasse di java.applet.applet È necessario definire un tag APPLET per poter inserire una chiamata al codice compilato in un documento html si può inoltre eseguire un applet mediante l' appletviewer del JDK (Java Development Kit) della Oracle Esempio di tag: <APPLET CODE = ProvaApplet.class WIDTH = 50 HEIGHT = 100> </APPLET> WIDTH ed HEIGHT definiscono le dimensioni della regione assegnata sulla finestra gestita dal browser per visualizzare l'applet. CODE indica il bytecode dell'applet da caricare

Ciclo di vita di un Applet public void init() eseguito la prima volta che viene caricato l'applet public void start() eseguito ogni volta che il browser ri-visualizza la parte di pagina dove è contenuta l'applet (ad esempio caricando o ricaricando la pagina html dov'è definita) public void stop() eseguito quando la pagina dove viene caricata l'applet viene disattivata (ad esempio visualizzandone un'altra) public void destroy() eseguito quando si esce dal browser o si chiude la pagina html dove sta il tag per l'applet. -------------------------------------------------------------------------- Si può utilizzare uno o più di questi metodi nel codice che definisce un applet. Non c'è nessun obbligo di usarne anche solo uno, anche se pare ragionevole utilizzare almeno init e/o start. Un applet può contenere la definizione di un costruttore (anche se normalmente è sostituito dal metodo init() )

import java.util.date; import java.awt.*; import java.awt.event.*; public class Bottoni extends Frame implements ActionListener { Date data = new Date(); public static void main (String argv[]) { Bottoni ist = new Bottoni(); Bottoni () { setlayout(null); setbounds (30, 10, 300, 200); settitle (getclass().getname()); Button bdata = new Button("Data"); bdata.setbounds (50, 150, 50, 30); bdata.addactionlistener (this); Button besci = new Button("Esci"); besci.setbounds (200, 150, 50, 30); besci.addactionlistener (this); add (bdata); add (besci); setvisible(true); public void paint (Graphics g) { g.drawstring (data.tostring(), 5, 40); public void actionperformed(actionevent e) { if (e.getactioncommand().equals("esci")) System.exit(0); if (e.getactioncommand().equals("data")){ data = new Date(); repaint(); Disegna sulla console grafica una finestra di 300x200 pixel, con un vertice di coordinate 30 e 10. Due bottoni con scritta Data e Esci vengono collocati nella finestra. Ogni volta che l'utente clicca su Data viene visualizzata sulla console la data e ora del giorno. Quando l'utente clicca su Esci termina l'esecuzione.

import java.util.date; import java.awt.*; import java.awt.event.*; import java.applet.*; public class ABottoni extends Applet implements ActionListener { Date data = new Date(); public void init(){ setlayout(null); setbounds (30, 10, 300, 200); // settitle (getclass().getname()); Button bdata = new Button("Data"); bdata.setbounds (50, 150, 50, 30); bdata.addactionlistener (this); Button besci = new Button("Esci"); besci.setbounds (200, 150, 50, 30); besci.addactionlistener (this); add (bdata); add (besci); public void paint (Graphics g) { g.drawstring (data.tostring(), 5, 40); public void actionperformed(actionevent e) { if (e.getactioncommand().equals("esci")) System.exit(0); if (e.getactioncommand().equals("data")){ data = new Date(); repaint();

Suoni ed Immagini import java.applet.*; import java.awt.*; import java.awt.image.*; public class Immagine extends Applet { Image img; AudioClip auc; public void init () { img = getimage (getdocumentbase(), "mar.gif"); auc = getaudioclip (getdocumentbase(), "97381.au"); public void start () { auc.loop(); public void stop () { auc.stop(); public void paint (Graphics g){ g.drawimage (img, 0, 0, this);