I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof....

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

Transcript of I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof....

Page 1: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

I Layout Manager

di java

Prof. Francesco Accarino

IIS Altiero Spinelli via Leopardi 132

Sesto san Giovanni

Page 2: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Creazione di interfacce complesse con i layout manager

La posizione di un componente aggiunto a un

container dipende essenzialmente:

dall’oggetto che è associato al container,

detto “layout manager”. In ogni container

infatti, esiste un layout manager associato di

default.

Un layout manager è un’istanza di una

classe che implementa l’interfaccia

LayoutManager.

Prof. Francesco Accarino 2Layout Manager

Page 3: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

layout manager

Le applicazioni grafiche si basano sempre su di un “top level container”, ovvero un container di primo livello. Infatti, avete mai visto un’applicazione dove ci sono dei bottoni, ma non c’è una finestra che li contiene?

Questo significa che in ogni applicazione Java con interfaccia grafica, è necessario quantomeno istanziare un top level container, di solito un Frame.

Un caso speciale è rappresentato dalle applet,

Prof. Francesco Accarino 3Layout Manager

Page 4: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

layout manager

Esistono decine di implementazioni di LayoutManager, ma tutto sommato le più importanti sono solo

cinque: FlowLayout

BorderLayout

GridLayout

CardLayout

GridBagLayout

Prof. Francesco Accarino 4Layout Manager

Page 5: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

layout managertutte le sottoclassi di Window (quindi anche

Frame), anno associato per default il

BorderLayout,

mentre tutta la gerarchia di Panel

utilizza il FlowLayout per il posizionamento

dei componenti.

Prof. Francesco Accarino 5Layout Manager

Page 6: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

layout manager

In realtà è anche possibile non utilizzare layout

manager per gestire interfacce grafiche.

Tale tecnica però comprometterebbe la consistenza

e la portabilità della GUI stessa.

Per esempio si può annullare il layout di un

container (ad esempio un Frame) con l’istruzione

setLayout(null)

Poi si usano i metodi setLocation(), setBounds() e

setSize() per gestire il posizionamento dei

componenti.

Prof. Francesco Accarino 6Layout Manager

Page 7: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Posizioni Assolute senza Layout

Prof. Francesco Accarino 7Layout Manager

Page 8: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Il FlowLayout

Il FlowLayout è il layout manager di default di

Panel e JPanel.

FlowLayout dispone i componenti aggiunti in

un flusso ordinato che va da sinistra a destra

con un allineamento centrato verso l’alto.

Per esempio il codice seguente (da inserire

all’interno di un metodo main()):

Prof. Francesco Accarino 8Layout Manager

Page 9: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

JFrame f = new JFrame("FlowLayout");

JPanel p = new JPanel();

JButton button1 = new JButton("Java");

JButton button2 = new JButton("Windows");

JButton button3 = new JButton("Motif");

p.add(button1);

p.add(button2);

p.add(button3);

f.add(p);

f.pack();

f.setVisible(true);

Prof. Francesco Accarino 9Layout Manager

Page 10: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Effetti di ridimensionamento sulla finestra

Prof. Francesco Accarino 10Layout Manager

Page 11: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

FlowLayout pannello di default per Jpanel

Prof. Francesco Accarino 11Layout Manager

Page 12: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Il BorderLayout

Il BorderLayout è il layout manager di default

per i Frame, il top level container

pereccellenza.

I componenti sono disposti solamente in

cinque posizioni specifiche che si

ridimensionano automaticamente:

NORTH, SOUTH che si ridimensionano orizzontalmente

EAST, WEST che si ridimensionano verticalmente

CENTER che si ridimensiona orizzontalmente e verticalmente

Prof. Francesco Accarino 12Layout Manager

Page 13: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Esempioimport java.awt.*;

import javax.swing.*;

public class BorderExample {

private JFrame f;

private JButton b[]={new JButton("b1"),new JButton("b2"),new JButton("b3"),

new JButton("b4"), new JButton("b5")};

public BorderExample() {

f = new JFrame("Border Layout Example");

}

public void setup() {

f.add(b[0], BorderLayout.NORTH);

f.add(b[1], BorderLayout.SOUTH);

f.add(b[2], BorderLayout.WEST);

f.add(b[3], BorderLayout.EAST);

f.add(b[4], BorderLayout.CENTER);

f.setSize(200,200);

f.setVisible(true);

}

public static void main(String args[]) {

new BorderExample().setup();

}

}Prof. Francesco Accarino 13Layout Manager

Page 14: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Il GridLayout

Il GridLayout dispone i componenti da sinistra verso destra e dall'alto verso il basso all’interno di una griglia.

Tutte le regioni della griglia hanno sempre la stessa dimensione (anche se vengono modificate le dimensioni del frame), e i componenti occuperanno tutto lo spazio possibile all’interno delle varie regioni.

Il costruttore del GridLayout permette di specificare righe e colonne della griglia.

Come per ilBorderLayout, i componenti occuperanno interamente le celle in cui vengono aggiunti.

Prof. Francesco Accarino 14Layout Manager

Page 15: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Esempioimport java.awt.*;

import javax.swing.*;

public class GridExample {

private JFrame f;

private JButton b[]={new JButton("b1"),new

JButton("b2"),new JButton("b3"), new JButton("b4"),

new JButton("b5"), new JButton("b6")};

public GridExample() {

f = new JFrame("Grid Layout Example");

}

public void setup() {

f.setLayout(new GridLayout(3,2));

for (int i=0; i<6;++i)

f.add(b[i]);

f.setSize(200,200);

f.setVisible(true);

}

public static void main(String args[]) {

new GridExample().setup();

}

}

Prof. Francesco Accarino 15Layout Manager

Page 16: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Esempio di GridLayout

Prof. Francesco Accarino 16Layout Manager

Page 17: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

CardLayoutPermette di condividere un area

mostrando un pannello alla volta di

quelli aggiunti ad esso

La stessa cosa è ottenibile con

pannelli a schede

Prof. Francesco Accarino 17Layout Manager

Page 18: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

GridBagLayout

Prof. Francesco Accarino 18Layout Manager

Page 19: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Creazione di una Interfaccia grafica

Costruiamo una prima applicazione GUI utilizzando i componenti di base per realizzare l’input e l’output e cioè una finestra nella quale l’utente potrà inserire il suo nome in una TextBox e pigiando su un bottone si visualizzera in una TextArea un saluto generato dal programma.

I componenti che utilizzeromo saranno quindi:

Una JTextField che accetterà l’input dall’utente.

Una JTextArea che visualizzerà l’output del programma.

Un JButton che permette all’utente di attivare il saluto.

Una JLabel che serve come commento di prompt per la JTextField.

Prof. Francesco Accarino 19Layout Manager

Page 20: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Creazione di una Interfaccia grafica

La nostra finestra dovrebbe essere costruita come mostra la figura:

Prof. Francesco Accarino 20Layout Manager

Page 21: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Creazione di una Interfaccia grafica

Se utilizziamo Un borderLayout

le operazioni da svolgere aranno:

si determina un conteiner

si costruisce un pannello

si aggiungono componenti al

pannello

si aggiunge l’intero pannello al

conteiner

Prof. Francesco Accarino 21Layout Manager

Page 22: I layoutmanager di java - Altervista layoutmanager di java.pdf · I Layout Manager di java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni. Creazione

Creazione di una Interfaccia grafica

Prof. Francesco Accarino 22Layout Manager