Elementi di Java Swing - cs.unibo.itsangio/SO_currentAA/Luc_SO/Schirinzi/Swing.pdf · AWT e Swing...

Post on 07-Dec-2018

221 views 0 download

Transcript of Elementi di Java Swing - cs.unibo.itsangio/SO_currentAA/Luc_SO/Schirinzi/Swing.pdf · AWT e Swing...

Elementi di Java Swing

LSO 2008

AWT e Swing

AWT e Swing mettono a disposizione del programmatore una serie di classi e interfacce per la realizzazione di applicazioni grafiche(GUI).

AWT: Abstract WindowingToolkit Definito nel package java.awt;

Legato al sistema grafico nativo del sistema operativo;

Velocità di esecuzione;

SWING Definito nel package javax.swing;

Costruito su AWT(Estende AWT), fornisce una GUI più sofisticata rispetto ad AWT;

Essendo scritto in puro Java, funziona allo stesso modo su tutte le piattaforme, al contrario delle AWT le quali sono legate al sistema grafico nativo del sistema operativo;

Lo svantaggio di questi componenti è la pesantezza, quindi una più lenta esecuzione;

Abbiamo il vantaggio di una uniformità di visualizzazione tra diverse piattaforme;

Programmazione di interfacce

Per realizzare un’interfaccia grafica dobbiamo:

1) Disegnare l’interfaccia, con le varie componenti(Bottoni, campi di testo, slider, ecc...);

2) Definire il comportamento delle azioni eseguite sull’interfaccia(Es. Pressione di un bottone,...);

Per mandare in esecuzione la GUI, dobbiamo:

1) Nel main istanzieremo l’interfaccia;

2) L’interfaccia rimane in attesa che qualcuno faccia qualcosa. Ad ogni operazione fatta dall’utente verranno eseguite delle azioni definite(parti di codice);

Disegnare l’interfaccia con Swing

Swing fornisce una struttura gerarchica a componenti;

Un componente può essere un widget, o un contenitore;

Un contenitore può contenere widget e altri contenitori;

Es di Widget:

Jlist

Esempio di interfaccia

JPanel

Invia Messaggio

JFrame

Seleziona utente:

Struttura

JFrame

JPanel

JButton JLabel

Contenitori

JList

Jlist

Codice dell’esempioJFrame f = new JFrame(“Frame 1”);

JPanel p = new JPanel( );

JButton b = new JButton(“Invia Messaggio”);

JLabel l = new JLabel(“Seleziona utente:”);

String[] data = {"one", "two", "three", "four"};

JList user = new JList(data);

p.add(b);

p.add(l);

p.add(user);

f.getContentPane().add(p);

Creazione delle componenti

Struttura delle componenti Nota:

L’interfaccia viene costruita in maniera “bottom up”. Prima creiamo le componenti e poi le “attacchiamo”

7

Gerarchia dei contenitori

Top-level container:

Contenitori che non possono essere inseriti in altri contenitori

Es. JFrame, JDialog, Japplet

Intermediate container:

Servono per semplificare la posizione di sottoparti dell’interfaccia

Es. JPanel, JSplitPane, JTabbedPane

Posizione dei componenti

Come posizionare le varie componenti?

Si utilizzano dei gestori di layoutManager(layoutManager);

Il layout manager si occupa di posizionare(ed eventualmente riposizionare) le vari parti che compongono l’interfaccia;

Per ogni contenitore può essere impostato un layoutManager;

Layout Manager

Left to right,Top to bottom

c

n

s

ew

FlowLayout GridLayout

BorderLayout

none, programmer sets x,y,w,h

null

One at a time

CardLayout GridBagLayout

JButton

Layout complessi

Per ottenere layout complessi, si possono usare delle combinazione di layout.

Es:

c

BorderLayout

One at a time

JButton

CardLayout

GridLayout

Interazione con l’interfaccia

Le azioni che l’utente compie sull’interfaccia, generano degli eventi.

• Click o double clicks del mouse;

• Inserimento di testo in textBox;

• Chiusura di una finestra;

• Ridimensionamento di una finestra;

• ....

Bisogna definire “cosa fare” nel momento in cui si verifica un’evento;

Eventi

jSendButton.addActionListener(

new ActionListener() {

public void actionPerformed(ActionEvent evt) {

jSendButtonActionPerformed(evt);

}

});

Riferimenti

Esempi su SWING

http://java.sun.com/docs/books/tutorial/uiswing/