Introduzione al linguaggio Java

10
Java per elettronici ed elettrotecnici Seconda lezione: l'interfaccia grafica ITIS Max Planck di Lancenigo di Villorba A.S. 2012-2013 Prof. PAOLO TOSATO Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported .

description

L'interfaccia grafica: seconda lezione del corso "Java per elettronici ed elettrotecnici"

Transcript of Introduzione al linguaggio Java

Page 1: Introduzione al linguaggio Java

Java per elettronici ed elettrotecnici Seconda lezione: l'interfaccia grafica

ITIS Max Planck di Lancenigo di Villorba A.S. 2012-2013

Prof. PAOLO TOSATO

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 2: Introduzione al linguaggio Java

2

Indice Paolo Tosato Java per elettronici ed elettrotecnici

15/04/2013

• Componenti e contenitori

• Layout

• Gestione degli eventi

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 3: Introduzione al linguaggio Java

3

Le interfacce grafiche sono gestite tramite una programmazione guidata dagli eventi (la generazione di un evento è causata da un’azione effettuata dall’utente).

Una volta generato un evento, si deve provvedere alla sua gestione, che viene demandata ad un gestire di eventi (a ogni elemento grafico, poiché può generare eventi, va associato un gestore).

Componenti e contenitori La parte di un’applicazione che interagisce con l’utente prende il nome di interfaccia grafica.

• Interfacce a caratteri • Interfacce grafiche: GUI (Graphical User Interface)

L’elemento principale di un’interfaccia grafica è la finestra.

La parte grafica è contenuta nei package java.awt e javax.swing. • AWT: Abstract Window Toolkit • Swing: evoluzione di AWT (es.: un pulsante può contenere un’immagine oltre che

una scritta)

15/04/2013

Paolo Tosato Java per elettronici ed elettrotecnici

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 4: Introduzione al linguaggio Java

Componenti e contenitori L’interfaccia grafica è formata da

• Componenti: oggetto con rappresentazione grafica che offre un’interazione con l’utente. Esempi: i pulsanti, le caselle di testo, i menu

• Contenitori: oggetto che può contenere componenti e ha il compito di posizionare e dimensionare le componenti al suo interno (layout). Esempi: finestra, pannello, Applet

Paolo Tosato Java per elettronici ed elettrotecnici

Swing:

• Contenitori principali: JFrame, JDialog, Japplet

• Contenitori intermedi (indicati anche con il termine pane): JPanel, JScrollPane, JTabbedPane

• Componenti atomiche: JLabel, JButton, JTextField, JTextArea, JComboBox.

4 15/04/2013

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 5: Introduzione al linguaggio Java

Componenti e contenitori import javax.swing.*; import java.awt.*; class Finestra { public static void main (String args[]) { JFrame f = new JFrame(); JPanel p = new JPanel(); JLabel l = new JLabel(“Etichetta”); JButton b = new JButton(“Bottone”); p.add(l); p.add(b); /* * Solo con Swing: le componenti dell’interfaccia non possono essere inserite direttamente nel contenitore * principale, ma solo in quello intermedio, ad eccezione della barra dei menu * / Container c = f.getContentPane(); c.add(p); f.setSize(300,200); // larghezza, altezza f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // chiusura finestra } }

Paolo Tosato Java per elettronici ed elettrotecnici

5 15/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 6: Introduzione al linguaggio Java

6

A ogni contenitore può essere associato un gestore che si preoccupa della disposizione degli elementi (Layout Manager).

Per assegnare un Layout manager a un contenitore si utilizza il metodo setLayout, che riceve come parametro un oggetto che rappresenta il gestore.

Layout

15/04/2013

FlowLayout Le componenti sono disposte per riga e centrate (associato di default a tutti i pannelli) f.setLayout(new FlowLayout()); p.steLayout(new FlowLayout(FlowLayout.LEFT)); // CENTER, RIGHT, LEFT p.add(new JButton(“b1”)); p.add(new JButton(“b2”)); BorderLayout Il contenitore è diviso in 5 regioni ciascuna delle quali può contenere un componente (associato di default a tutti i Frame). JPanel p = new Panel(); p.setLayout(new BorderLayout()); p.add(b, “South”); // North, South, Center, East, West

Paolo Tosato Java per elettronici ed elettrotecnici

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 7: Introduzione al linguaggio Java

Layout GridLayout Dispone le componenti in una griglia. f.setLayout(new GridLayout(5, 3)); // griglia con 5 righe e 3 colonne f.setLayout(new GridLayout(3, 2, 10, 10)); // 10, 10 sono i pixel che separano le componenti // (spazio orizzontale, spazio verticale) Posizionamento assoluto f.setLayout(null); <componente>.setBounds(x, y, larghezza, altezza); // x,y rispetto al video; larghezza e altezza componente

Paolo Tosato Java per elettronici ed elettrotecnici

7 15/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 8: Introduzione al linguaggio Java

8

I due aspetti principali dell’interazione con l’utente: • Riconoscere quando compie un’azione (compito affidato al sistema di gestione degli eventi) • Predisporre le operazioni da eseguire in corrispondenza delle azioni compiute dell’ utente

(programmatore).

Tutte le componenti sono possibili oggetti di origine, cioè che possono generare eventi.

N.B.: Tutti gli eventi che non hanno un gestore vengono ignorati.

Uno o più ascoltatori (listeners/gestori degli eventi) possono registrarsi nell’oggetto origine per essere avvisati della generazione di un particolare evento.

Un ascoltatore è un oggetto la cui classe implementa un’interfaccia di tipo listener (java.awt.event.*)

Per realizzare la gestione degli eventi si deve quindi: • Creare uno o più ascoltatori in base agli eventi da gestire • Registrare l’ascoltatore in un oggetto origine che si vuole controllare

N.B.: è obbligatorio che tutti i metodi di un ascoltatore siano presenti (implementati) anche se non contengono alcuna istruzione.

Gestione degli eventi

15/04/2013

Paolo Tosato Java per elettronici ed elettrotecnici

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 9: Introduzione al linguaggio Java

import javax.swing.*; import java.awt.*; public class Pulsanti { public static void main(String[] args) { JFrame f = new JFrame("Pulsanti"); JPanel p = new JPanel(); JButton sup = new JButton("Superiore"); JButton inf = new JButton("Inferiore"); JTextArea a = new JTextArea(50, 10); p.setLayout(new BorderLayout()); p.add(sup, BorderLayout.NORTH); p.add(a, BorderLayout.CENTER); p.add(inf, BorderLayout.SOUTH); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); sup.addActionListener(new GestorePulsante(a)); inf.addActionListener(new GestorePulsante(a)); a.setEditable(false); f.getContentPane().add(p); f.setSize(400,300); f.setVisible(true); } }

Gestione degli eventi Paolo Tosato Java per elettronici ed elettrotecnici

9 15/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.

Page 10: Introduzione al linguaggio Java

import javax.swing.*; import java.awt.*; import java.awt.event.*; public class GestorePulsante implements ActionListener { // contiene solo il metodo actionPerformed private JTextArea a; public GestorePulsante(JTextArea a) { this.a = a; } public void actionPerformed(ActionEvent e) { String pulsante = e.getActionCommand(); // restituisce la stringa con il testo mostrato // nel pulsante if (pulsante.equals("Superiore")) { a.append("E' stato premuto il pulsante SUPERIORE\n"); } if (pulsante.equals("Inferiore")) { a.append("E' stato premuto il pulsante INFERIORE\n"); } } }

Gestione degli eventi Paolo Tosato Java per elettronici ed elettrotecnici

10 15/04/2013 Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported.