Java GUI. Swing Java

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

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

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

Sviluppo di Interfacce Grafiche in Java

L interfaccia grafica con Java

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

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

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

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

BorderLayout. 1 Gestori di Layout (guida visuale)

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

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

Gestione di eventi ed interfacce utente grafiche

L interfaccia grafica in Java

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

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

Progettazione e Sviluppo di Interfacce Grafiche con Java Swing

Programmazione in rete e laboratorio

Programmazione Java: Interfacce grafiche (GUI)

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

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

Alessandro De Luca. Lezione, 13 maggio 2015

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

Introduzione al package grafico Swing

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

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

Campo Minato. in java

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Interazioni col mondo: eventi

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

Esercizi. Esercizio P9.16. File ExP9_16.java. Anno Accademico 2003/04. Docente modulo 2: Barbara Masucci

ESERCITAZIONI SU Java

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

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

APPLICAZIONI & APPLET

COGNOME.NOME. Matricola

Programmazione ad Eventi

Introduzione (Swing vs AWT)

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

JAVA Interfacce grafiche per Applicazioni ed Applet

In alcune applicazioni è necessario mostrare le informazioni in formato tabellare. Mario Bianchi Via Roma, /

TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet

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

Introduzione. Java. G. Prencipe

Grafico della parabola

Esempio: Ogni colonna può contenere un solo tipo di dati. Colonne e righe sono numerate partendo da zero. L Header non conta nella numerazione:

Thread e Concorrenza in Java Swing

Programmazione in Java e gestione della grafica. Lezione 19

Sviluppo di Interfacce Grafiche in Java. Università di Roma La Sapienza

Le Applet Java. Le Applet

Threads e Concorrenza in Java Swing

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

PROGRAMMAZIONE GRAFICA

Database Modulo 6 CREAZIONE DI MASCHERE

Corso Eclipse. Prerequisiti. 3 Window Builder

maggio 2004 Stefano Sanna - gerda@crs4.it

Definizione di classi. Walter Didimo

Gestione degli eventi in Java

Esercitazione n 2. Obiettivi

Laboratorio di Programmazione 1 [Java]

8. GUI : Graphics User Interface

14 - Metodi e Costruttori

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Programmazione in Java e gestione della grafica. Lezione 21

Esercizio 1: Gara di MotoGP

14Ex-Cap11.qxd :20 Pagina Le macro

Principi di base della programmazione di interfacce grafiche in Java

Corso sul linguaggio Java

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

interfacce ed eventi intercettare il mouse ed altri eventi

WORD PROCESSING.

Транскрипт:

Java GUI Swing Java 1

Introduzione n Componenti grafici di Java (Swing) Utilizzo di alcuni dei metodi per creare semplici finestre grafiche Accesso ai JavaDoc per usare meglio gli oggetti già pronti n Richiami Variabili locali, di istanza e parametri Costruttori Overloading dei metodi e dei costruttori metodo main 2

Java Swing JTextField JLabel JCheckBox JButton JFram e JComboBox ContentPane 3

I Lego n JFrame à getcontentpane() Al Content Pane è un Panel a cui si possono aggiungere (con il metodo add) n JPanel n JButton, JTextField, JCheckBox, JLabel, JCombox n altri componenti Swing n JPanel Metodo add per aggiungere componenti n JPanel n JButton, JTextField, JCheckBox, JLabel, JCombo n altri componenti Swing 4

JFrame - javax.swing.jframe n JFrame: una finestra dotata di cornice, barra del titolo con pulsanti tipici e un pannello (content pane) Content Pane È il pannello contenuto nel JFrame 5

JFrame n Come si aggiungono gli elementi e si imposta il colore? Si applicano al Content Pane! n Content Pane È un Container, in sostanza è un pannello semplice (contiene componenti) In genere si crea un proprio JPanel (o JContainer) e lo si imposta come Content Pane I metodi che si possono applicare sono quali tutti quelli del JPanel 6

JFrame Costruttori n public JFrame() Crea un nuovo Frame inizialmente invisibile n public JFrame(String title) Crea un nuovo frame, inizialmente invisibile, con un testo specificato. Metodi n public void setvisible(boolean b) Mostra o nasconde un Frame in base al valore del parametro b 7

JFrame - metodi n public Container getcontentpane() Ritorna il contentpane per il Frame. n public void setcontentpane(container contentpane) Imposta il contentpane del Frame. n public void setdefaultcloseoperation(int operation) Imposta l operazione che viene eseguita quando si chiude la finestra. JFrame.DO_NOTHING_ON_CLOSE JFrame.HIDE_ON_CLOSE JFrame.DISPOSE_ON_CLOSE JFrame.EXIT_ON_CLOSE. 8

JFrame - metodi n public void setsize(int width, int height) Imposta la dimensione della finestra n public void setlocation(int x, int y) Sposta la finestra nella posizione x,y specificata (relativa all angolo in alto a sinistra della finestra) 9

Color - java.awt.color Costruttori n public Color(int r, int g, int b) Crea un colore RGB opaco nel range (0-255). n public Color(int r, int g, int b, int a) Crea un colore RGB nel range (0-255) con l aggiunta della trasparenza (canale Alpha). n Alcuni colori già pronti, come campi statici di Color Color.BLACK,Color.BLUE,Color.CYAN, Color.DARK_GRAY, Color. GRAY, Color.GREEN, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE, Color.PINK, Color.RED, Color.WHITE, Color.YELLOW 10

JPanel - javax.swing.jpanel n La classe JPanel implementa un contenitore senza cornice che si usa per contenere altri componenti 11

JPanel Costruttore n public JPanel() Crea un panel vuoto con flow layout. Metodi n public void setbackground(color bg) Imposta il colore di sfondo. Il colore è usato solo se il componente è opaco. n public void setopaque(boolean b) Se true lo sfondo del componente (background) viene disegnato 12

JPanel - metodi n public Component add(component comp) Aggiunge un componente (Component di Swing) al pannello e viene posizionato in base al Layout Manager n public void add(component comp, Object constraints) Come il metodo precedente, ma permette di specificare alcuni vincoli di alcuni LayoutManager - overloading n public void setpreferredsize(dimension preferredsize) Imposta la dimensione preferita di un componente à Ad un pannello posso aggiungere anche altri Pannelli n Serve per organizzare meglio lo spazio à Il metodo setsize( ) non funziona in quanto la size è gestita dal LayoutManager (vedremo in seguito) 13

Esempio public static void main(string[] s){ JFrame f=new JFrame();//nuova finestra JPanel p=new JPanel();//nuovo pannello } f.setcontentpane(p);//imposta il content pane p.setbackground(color.green);/*colore dello sfondo (content pane)*/ f.setsize(500,500);/*imposta la dimensione della finestra */ f.setvisible(true);/*visualizza la finestra*/ 14

JLabel - javax.swing.jlabel Bottoni: la classe JLabel implementa un etichetta con sfondo non opaco Costruttori n JLabel() Crea una label vuota. n JLabel(String text) Crea una lavel con il testo specificato 15

JLabel metodi comuni n public void setpreferredsize(dimension preferredsize) Imposta la dimensione preferita di un componente n public void setforeground(color fg) Imposta il colore del testo. n public void setbackground(color bg) Imposta il colore di sfondo. Il colore è usato solo se il componente è opaco. n public void settext(string text) Imposta il testo visualizzato n public void setopaque(boolean isopaque) Se true lo sfondo del componente (background) viene disegnato 16

JButton - javax.swing.jbutton Bottoni: la classe JButton implementa un pulsante Costruttori n public JButton() Crea un pulsante senza testo n public JButton(String text) Crea un pulsante con il testo specificato 17

JButton metodi comuni n public void setpreferredsize(dimension preferredsize) Imposta la dimensione preferita di un componente n public void setforeground(color fg) Imposta il colore del testo. n public void setbackground(color bg) Imposta il colore di sfondo. Il colore è usato solo se il componente è opaco. n public void settext(string text) Imposta il testo visualizzato n public void setopaque(boolean isopaque) Se true lo sfondo del componente (background) viene disegnato 18

Esempio public static void main(string[] s){ /*nuova finestra*/ JFrame f=new JFrame(); /*nuovo pannello */ JPanel p=new JPanel(); /*imposta il content pane*/ f.setcontentpane(p); /*crea un pulsante*/ JButton b=new JButton( pulsante di prova ); /*aggiunge il pulsante al pannello */ p.add(b); /*imposta la dimensione della finestra */ f.setsize(500,500); /*visualizza la finestra*/ f.setvisible(true); } 19

JTextField - javax.swing.jtextfield n Casella di Testo: la classe JTextField implementa un area in cui è possibile inserire del testo Costruttori n public JTextField() Costruisce una Test Field vuota n public JTextField(String text) Costruisce una Test Field con il testo specificato 20

JTextField metodi comuni n public void setpreferredsize(dimension preferredsize) Imposta la dimensione preferita di un componente n public void setforeground(color fg) Imposta il colore del testo. n public void setbackground(color bg) Imposta il colore di sfondo. Il colore è usato solo se il componente è opaco. n public void settext(string text) Imposta il testo visualizzato n public void setopaque(boolean isopaque) Se true lo sfondo del componente (background) viene disegnato 21

JComboBox - javax.swing.jcombobox n Casella selezione Costruttori n JComboBox(Object[] items) Crea una JComboBox che contiene gli elementi specificati nell array. 22

JComboBox metodi comuni n public void setpreferredsize(dimension preferredsize) Imposta la dimensione preferita di un componente n public void setforeground(color fg) Imposta il colore del testo. n public void setbackground(color bg) Imposta il colore di sfondo. Il colore è usato solo se il componente è opaco. n public void setopaque(boolean isopaque) Se true lo sfondo del componente (background) viene disegnato 23

JComboBox Metodi n public int getselectedindex() Ritorna l indice dell elemento selezionato o -1 se non è selezionato nulla n public void setselectedindex(int anindex) Imposta l indice selezionato n public Object getselecteditem() Ritorna l elemento selezionato n public void setselecteditem(object anobject) Imposta l elemento specificato come selezionato 24

JCheckBox - javax.swing.jcombobox n Casella selezione Costruttori n public JCheckBox() Crea un check box non selezionato n public JCheckBox(String text) Crea un check box non selezionato con il testo specificato 25

JCheckBox metodi comuni n public void setpreferredsize(dimension preferredsize) Imposta la dimensione preferita di un componente n public void setforeground(color fg) Imposta il colore del testo. n public void setbackground(color bg) Imposta il colore di sfondo. Il colore è usato solo se il componente è opaco. n public void setopaque(boolean isopaque) Se true lo sfondo del componente (background) viene disegnato 26

JCheckBox Metodi n public boolean isselected() Indica se selezionato n public void setselected(boolean b) Imposta il check su selezionato 27

LayoutManager n Permette di definire il modo in cui i componenti vengono disposti all interno di un pannello FlowLayout GridLayout BorderLayout 28

FlowLayout n Dispone i componenti uno di seguito all altro (eventualmente andando alla riga successiva) n FlowLayout() Costruisce un manager con allineamento al centro n FlowLayout(int align) Costruisce un manager con allineamento specificato dal parametro n FlowLayout(int align, int hgap, int vgap) Costruisce un manager con allineamento specificato dal parametro e spaziatura orizzontale e verticale specificata 29

GridBag n Dispone i componenti a scacchiera (Matrice) n public GridLayout() Crea una griglia su singola colonna n public GridLayout(int rows, int cols) Crea una griglia con numero di righe e colonne specificate n public GridLayout(int rows, int cols, int hgap, int vgap) Crea una griglia con numero di righe e colonne specificate, con una spaziatura (tra le celle) orizzontale e verticale specificata 30

BorderLayout n Dispone i componenti in 5 aree (Nord, Sud, Est, Ovest e Centro) n public BorderLayout() Costruisce un border layout spaziatura n public BorderLayout(int hgap, int vgap) Costruisce un border layout spaziatura orizzontale e verticale specificata 31

BorderLayout n Per aggiungere elementi occorre specificare in quale area collocarli n Supponendo che xxx sia una variabile associata ad un Component (es JButton etc) p.add(xxx,borderlayout.east); p.add(xxx,borderlayout.west); p.add(xxx),borderlayout.north); p.add(xxx,borderlayout.south); p.add(xxx,borderlayout.center); 32

Grafica ed eventi Più movimento alle classi 33

JComponent e Repaint n Come chiedere il ridisegno di un componente? Ogni componente Swing ha il metodo repaint(): l invocazione di questo metodo schedula il ridisegno del componente quanto prima ESEMPIO: JPanel p=new JPanel(); p.add( ) p.repaint(); n Il repaint comporta la chiamata a metodo paintcomponent(graphics g) Utile nei quando si usano componenti per le animazioni 34

JFrame n Come strutturare le classi che utilizzano le swing? quando si ha bisogno di un JFrame, creare una classe che estende JFrame e impostare nel costruttore tutte le istruzioni di inizializzazione Tutti i JComponent che devono essere accessibili vengono definiti come campi e inizializzati nel costruttore Esempio public class Myframe extends JFrame{ private JButton b; public Myframe(){ b=new JButton( pulsante ); } public void miometodo(){ b.setforeground(color.red); } } 35

Listener n Vengono invocati a seguito di un determinato evento n Alcuni listener di interesse: ActionListener MouseListener MouseMotionListener MouseWheelListener n I metodi dei listener vengono invocati in maniera automatica dal gestore di eventi Java 36

Listener e accesso alla classe n Permettere al listener di accedere a campi e metodi della classe generale (in genere si estende JFrame ma per le animazioni a volte si usa JComponent) Definire i listener come classi interne della classe ESEMPIO: public class Myframe extends JFrame{ private JButton b; public Myframe(){ b=new JButton( pulsante ); b.addactionlistener(new MioListener()); } private class MioListener implements ActionListener{ public void actionperformed(actionevent e){ b.setbackground(color.green); } } } 37

Listener e Adapter n Adapter Di ogni tipo di listener esiste un Adapter Per ogni *Listener esiste *Adapter ad eccezione di quelli con zero o uno metodi. n ESEMPIO: MouseAdapter n MouseMotionListener à MouseMotionAdapter n MouseWheelListener à MouseWheelAdapter 38

Registrazione dei Listener n Come registrare un listener *Listener: ActionListener,MouseListener, MouseMotionListener n Per aggiungere un *Listener ad un oggetto c c.add*listener(listener); n Esempio: JButton b=new JButton( mio pulsante ); ActionListener l=new b.addactionlistener(l); b.addmousemotionlistener( ) 39

Analisi degli eventi passo passo n Individuare il componente principale Definire una classe che estende JFrame o JPanel Nel costruttore inizializzare i componenti grafici Utilizzare variabili di istanza per i componenti che devono essere acceduti in altri metodi della classe o nei listener n Stabilire quali sono gli eventi che interessano e quindi i tipi di listener utilizzare Implementare l interfaccia del listener o estendere l Adapter come classe interna 40

Analisi degli eventi passo passo n Definire in quali aree vengono generati gli eventi cioè a quali componenti agganciare i listener registrare i listener definiti ai componenti (da fare nel costruttore della classe generale) n Definire le azioni da eseguire nei metodi dei Listener 41

Ricapitolando 1. Definire una classe principale che estende JFrame o JPanel 2. Nel costruttore inizializzare componenti grafici e listener 3. Stabilire quali sono gli eventi e a in quali componenti 4. Implementare i listener e registrarli 5. Definire le azioni da eseguire nei metodi dei Listener 42