Alessandro De Luca. Lezione, 13 maggio 2015

Похожие документы
Programmazione Java: Interfacce grafiche (GUI)

L interfaccia grafica in Java

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

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

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

PROVA FINALE Ingegneria del software

L interfaccia grafica con Java

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

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

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

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

Interazioni col mondo: eventi

Corso sul linguaggio Java

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

Introduzione al package grafico Swing

Corso Eclipse. Prerequisiti. 3 Window Builder

Gestione degli eventi in Java

Sviluppo di Interfacce Grafiche in Java

Programmazione in Java e gestione della grafica. Lezione 19

Gestione di eventi ed interfacce utente grafiche

Grafico della parabola

Introduzione (Swing vs AWT)

APPLICAZIONI & APPLET

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

Programmazione in rete e laboratorio

Multithreading in Java. Fondamenti di Sistemi Informativi

TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

maggio 2004 Stefano Sanna - gerda@crs4.it

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

BorderLayout. 1 Gestori di Layout (guida visuale)

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:

Thread e Concorrenza in Java Swing

Guida di Keyboard Builder Sielco Sistemi Srl

Android. Implementare una interfaccia utente

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1

Progettazione e Sviluppo di Interfacce Grafiche con Java Swing

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

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

GESTIONE DEI PROCESSI

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

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

Alcuni Design Pattern in Java

23 - Graphical User Interface GUI (Cenni)

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

UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Corso Corso di di programmazione di di sistemi mobile 1 1. Android Laboratorio. Primo Progetto, Toast

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

Scope e visibilità per classi

Threads e Concorrenza in Java Swing

Università degli Studi di Napoli Parthenope Facoltà di Scienze e Tecnologie Corso di Laurea in Informatica Generale

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

CdL in Medicina Veterinaria - STPA AA

I DATABASE Database relazionale

10.7 La classe BitSet Esercizi di autovalutazione Risposte agli esercizi di autovalutazione Esercizi 559

interfacce ed eventi intercettare il mouse ed altri eventi

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

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

Configurare TPTP in Eclipse e testare un applicazione

Java Virtual Machine

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

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

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

Tale attività non è descritta in questa dispensa

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

Utilizzare il NetBeans GUI Builder. Dott. Ing. M. Banci, PhD

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

COGNOME.NOME. Matricola

1. Le macro in Access 2000/2003

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

Fondamenti di informatica. Word Elaborazione di testi

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

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Esercizi della lezione 5 di Java

Programmazione a Oggetti Modulo B

Gruppi di Thread. Java threads (3) Gruppi di thread e Timer. Operating Systems. Operating Systems. Java threads 3. Java threads 3

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

Java Interfaccia Grafica

Introduzione. Strumenti di Presentazione Power Point. Risultato finale. Slide. Power Point. Primi Passi 1

Registratori di Cassa

Corso su LINQ Lezione 16. Introduzione

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

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

Flow!Works Manuale d uso

Programmazione a Oggetti Lezione 10. Ereditarieta

Gestione Rapporti (Calcolo Aree)

Транскрипт:

Basi Basi di di dati dati ee sistemi sistemi informativi informativi II mod.laboratorio mod.laboratorio Alessandro De Luca Università degli Studi di Napoli Federico II Lezione,

Introduzione a Java Swing Usata per creare GUI Include un gran numero di componenti Permette di includere funzionalità grafiche Parte delle Java Foundation Classes Indipendente dalla piattaforma, look&feel personalizzabile 2 / 45

Contenitore: JFrame North Layout: BorderLayout Center Componenti: JLabel JButton, contenente una ImageIcon 3 / 45

Per costruire una GUI Importare i package Creare un contenitore toplevel (es. JFrame) Applicare un layout (es. BorderLayout) Aggiungere componenti (es. JButton, JLabel) 4 / 45

Componenti Swing Contenitori top-level Contenitori general-purpose Contenitori special-purpose Controlli di base Display non interattivi Display interattivi 5 / 45

Contenitori top-level Componenti al livello superiore di ogni gerarchia di componenti JDialog JFrame JApplet 6 / 45

Importanza Ogni programma ha almeno un contenitore top-level Di norma un'applicazione GUI ha almeno un frame al top della gerarchia. Es. applicazione con una finestra principale e due di dialogo 7 / 45

Contenitori general-purpose Contenitori intermedi che possono essere usati in varie circostanze Usati per raggruppare controlli di base Aggiunti ai contenitori top-level Scroll pane Toolbar Panel 8 / 45

Controlli di base Sono la parte attiva della GUI I controlli sono la sorgente degli eventi Gli oggetti sono legati ai controlli per gestire gli eventi Buttons Slider Menu 9 / 45

Display non interattivi Non modificabili dall'utente Tooltip Label 10 / 45

Display interattivi Forniscono interfacce standard per task comuni (es. Inserire testo: TextField) 11 / 45

Come si lega tutto insieme Esistono 5 diversi layout manager BorderLayout BoxLayout FlowLayout GridBagLayout GridLayout 12 / 45

Esempio di componente: JButton Alcuni costruttori: JButton() Crea un pulsante senza testo né icone JButton(String text) Crea un pulsante con testo JButton(String text, Icon icon) Crea un pulsante con testo e icona 13 / 45

JButton (cont.) Alcuni metodi: addactionlistener Registra un (ActionListener a) ActionListener al JButton setfont(font font) Specifica i font setbackground (Color color) Specifica il colore di sfondo 14 / 45

Esempio: Hello world Importa i package import javax.swing.*; Spesso i programmi swing importano anche import java.awt.*; (AWT è un'altra JFC, meno recente) E per gestire gli eventi import java.awt.event.*; 15 / 45

Alcune istruzioni Sceglie la decorazione della finestra JFrame.setDefaultLookAndFeelDecorated (true) Crea il frame e lo mostra su schermo JFrame frame = new JFrame("HelloWorldSwing"); //... frame.pack(); frame.setvisible(true); 16 / 45

Alcune istruzioni (cont.) Inserisce il label nel frame (scritta «Hello world») JLabel label = new JLabel("Hello World"); frame.getcontentpane().add(label); 17 / 45

Content Pane La label è aggiunta al content pane Ogni Contenitore top-level ha un content pane Contiene tutte le componenti visibili Non contiene menu e decorazioni 18 / 45

Altre istruzioni Per uscire cliccare sulla X della finestra frame.setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); Parte finale: fare partire il thread javax.swing.swingutilities.invokelater( new Runnable() { public void run() { /* create and show the GUI */ } }); 19 / 45

Codice (1/2) import javax.swing.*; public class HelloWorldSwing { private static void createandshowgui() { JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new Jframe("Hello World: Swing"); frame.setdefaultcloseoperation(jframe.exit_on_close); JLabel label = new JLabel("Hello World"); frame.getcontentpane().add(label); frame.pack(); frame.setvisible(true); } 20 / 45

Codice (2/2) } public static void main(string[] args) { javax.swing.swingutilities.invokelater( new Runnable() { public void run() { createandshowgui(); } } ); } 21 / 45

Thread Tre tipi di thread Iniziale Event dispatch thread Worker (o backgorund) thread 22 / 45

Initial thread Il thread che fa partire l'applicazione iniziale Crea un oggetto Runnable che inizializza la GUI Passa l'oggetto all'event dispatch thread Creata la GUI l'applicazione è event driven 23 / 45

Per iniziare Due metodi per creare la GUI SwingUtilities.invokeLater (schedula il task ed esce) SwingUtilities.invokeAndWait (schedula il task ed attende la fine) 24 / 45

Event dispatch thread Il codice che gestisce gli eventi gira su questo thread Anche molti metodi Swing girano su questo thread Necessario perché Questi metodi non sono «thread safe» invocati su thread multipli possono creare Errori di coerenza della memoria Interferenza tra thread 25 / 45

Worker threads Usati per task lunghi Es. Caricare dei file per un'animazione 26 / 45

Altro programma di esempio Aggiornare un'etichetta ogni volta che l'utente schiaccia il pulsante 27 / 45

Istruzioni, 1 Creare il JButton JButton button = new JButton("I'm a" + " Swing button!"); Creare uno shortcut da tastiera button.setmnemonic('i'); Dichiarare variabili per la JLabel private static String labelprefix = "Numero di clic: "; private int numclicks = 0; 28 / 45

Istruzioni, 2 Istanziare la label JLabel label = new JLabel(labelPrefix + '0'); Aggiornare la label label.settext(labelprefix + numclicks); Pulsante ed etichetta vanno inseriti in un contenitore 29 / 45

Istruzioni, 3 Creare il contenitore (JPanel) e assegnargli un layout JPanel panel = new JPanel(new GridLayout(0,1)); Aggiungere le componenti panel.add(button); panel.add(label); Assegnare un bordo panel.setborder( BorderFactory.createEmptyBorder(... )); 30 / 45

Eventi Eventi avvengono quando si Preme un tasto Muove/clicca il mouse ecc Per ricevere la notifica un oggetto deve registrarsi ad un event listener Bisogna implementare un'interfaccia Ci sono delle linee di codice necessarie 31 / 45

Definire i listener Specificare che la classe di gestione degli eventi implementa un listener public class MyClass implements ActionListener Registrare un o piú componenti dell'oggetto al listener somecomponent.addactionlistener (istanzamyclass); 32 / 45

Definire i listener (cont.) Implementare l'interfaccia al listener public void actionperformed(actionevent e) { } //reazione all'evento... 33 / 45

Applicazione al nostro esempio public class SwingApplication implements ActionListener { //... JButton button = new JButton("I'm a Swing button!"); button.addactionlistener(this); //... public void actionperformed(actionevent e) { numclicks++; label.settext(labelprefix + numclicks); } } 34 / 45

Tipi di eventi e di listener Esistono vari listener ActionListener (click su un pulsante,...) WindowListener (chiudere una finestra) MouseListener (pressione pulsante mouse) PropertyChangeListener (cambiamento in una componente, es. Testo in una label) 35 / 45

Codice (1/4) import javax.swing.*; import java.awt.*; import java.awt.event.*; public class SwingApplication implements ActionListener { private static String labelprefix = "Numero di clic: "; private int numclicks = 0; final JLabel label = new JLabel(labelPrefix + "0 "); 36 / 45

Codice (2/4) public Component createcomponents() { JButton button = new JButton("I'm a Swing button!"); button.setmnemonic(keyevent.vk_i); button.addactionlistener(this); label.setlabelfor(button); JPanel pane = new JPanel(new GridLayout(0, 1)); pane.add(button); pane.add(label); pane.setborder(borderfactory.createemptyborder(30, 30,10,30)); //top,left,bottom,right return pane; } 37 / 45

Codice (3/4) /** * Crea e mostra la GUI. Invocare dall'event-dispatching thread. */ private static void createandshowgui() { JFrame.setDefaultLookAndFeelDecorated(true); //imposta L&F JFrame frame = new Jframe("SwingApplication"); //Crea finestra frame.setdefaultcloseoperation(jframe.exit_on_close); SwingApplication app = new SwingApplication(); Component contents = app.createcomponents(); frame.getcontentpane().add(contents, BorderLayout.CENTER); frame.pack(); frame.setvisible(true); //Mostra la finestra. } 38 / 45

Codice (4/4) // Evento click sul pulsante public void actionperformed(actionevent e) { numclicks++; label.settext(labelprefix + numclicks); } public static void main(string[] args) { //Job schedule per l'event-dispatching thread: GUI javax.swing.swingutilities.invokelater(new Runnable() { public void run() { createandshowgui(); } }); } } 39 / 45

Design Swing tramite NetBeans Permette di risparmiarsi molte righe di codice e di concentrarsi quasi esclusivamente sulla gestione degli eventi. Si inizia aggiungendo un contenitore top-level al progetto, ad es 40 / 45

Nuovo JFrame 41 / 45

Disegno della GUI Una volta creato il contenitore, la scheda Design permette di aggiungere controlli trascinandoli dalla Palette La scheda Navigator mostra la gerarchia delle componenti, consentendo di rinominarle La scheda Properties mostra i campi del controllo selezionato e permette di modificarli ove possibile. Molti hanno metodi get e set 42 / 45

Aggiunta di listener È possibile registrare listener ai controlli, ad es. dal menu contestuale NetBeans poi mostra il nuovo metodo in cui va scritta la reazione all'evento Per esempio, per gestire i clic su un pulsante 43 / 45

ActionListener 44 / 45

Soluzione esercizi Vedere file TestPiloti.zip. 45 / 45