Corso di Java

(senza pretese)

Lezione cinque: mettiamo qualcosa nella finestra


Panoramica dei componenti

Il titolo sopra è abbastanza vago: mettiamo qualcosa nella finestra. In java ci sono molti tipi di oggetti (contenuti in altrettante classi) che possono essere inseriti dentro una finestra di una applicazione: pannelli, bottoni, aree di testo, menu a tendina e molto altro ancora. Quindi per prima cosa vediamo come è possibile posizionare gli elementi in una finestra. Per fare questo ci serviremo dei...
Pannelli e layout
Come avrete visto nell'esempio della pagina precedente, l'oggetto JFrame crea una finestra; programmando con le librerie swing, per posizionare gli oggetti abbiamo bisogno di un content pane, un pannello dei contenuti, che funzioni da "contenitore" degli oggetti che vogliamo utilizzare. Questo pannello è un normale pannello JPanel.
Il vantaggio di utilizzare i pannelli consiste nel fatto che possiamo sfruttare delle classi che indicano quale layout (struttura) deve avere il nostro contenitore.
Una volta creato un pannello (con del codice tipo JPanel pannello = new JPanel();) gli associamo un layout tramite il metodo setLayout() con questa sintassi:
JPanel pannello = new JPanel();   //Crea il pannello
pannello.setLayout(new BorderLayout());

Come avete visto, il metodo setLayout() ci porta ad analizzare le classi che riguardano i vari layout utilizzabili. Ecco i tipi di visualizzazione, con relativa descrizione:

BorderLayout()
Un layout a bordi, ovvero i componenti possono essere posizionati rispettivamente in: "North", "South", "East", "West" e "Center".
Gli elementi posizionati in questo layout tendono a occupare tutto lo spazio non occupato da altri oggetti, tanto per capirsi, un oggetto solo, tenderà ad espandersi a tutta la finestra indipendentemente dalla posizione in cui viene messo.
In tutti gli altri casi più oggetti si adattano automaticamente alle dimensioni più opportune.
I due costruttori sono:

GridLayout()
Sono layout a griglia, e i due costruttori sono:

FlowLayout()
Gli oggetti sono inseriti in ordine da sinistra a destra fino a che non arrivano alla dimensione massima disponibile, poi si dispongono allo stesso modo nella riga successiva. I due costruttori sono:

Per aggiungere componeti ai pannelli si usa il metodo add(componente), chiamato dal pannello a cui si vuole aggiungere il componente, come unica eccezione abbiamo che nei pannello con BorderLayout bisogna usare add(String, componente) dove la stringa è una di quelle viste sopra ("North", "South", ecc...).
Tralasciando la creazione di bottoni, il seguente codice permette di capire come funzionano i pannelli:

JButton b_nord = new JButton("Nord");
JButton b_est = new JButton("Est");
JButton b_ovest = new JButton("Ovest");
JButton b_sinistra = new JButton("Sinistra");
JButton b_destra = new JButton("Destra");

JPanel pann_1 = new JPanel();
JPanel pann_2 = new JPanel();

pann_1.setLayout(new BorderLayout());
pann_2.setLayout(new GridLayout(2,1);

pann_1.add("North", b_nord);
pann_1.add("East", b_est);
pann_1.add("West", b_ovest);
pann_2.add(b_sinistra);
pann_2.add(b_destra);
pann_1.add("Center", pann_2);

Come avete visto ho creato cinque bottoni e due pannelli ed ho assegnato al primo pannello tre bottoni, al secondo due bottoni e poi ho incluso nel primo pannello il secondo. Questo vi avrà fatto capire che i pannelli possono essere parte di altri pannelli per una migliore gestione dello spazio dell'applicazione. Il primo pannello ha un layout a bordi e il secondo a griglia con due colonne e una riga.

Infine, come accennato all'inizio, per indicare un pannello come content pane basta inserire il metodo setContentPane(nome_del_pannello) all'interno del costruttore della classe e il gioco è fatto.

Nella prossima lezione inizieremo con gli oggetti veri e propri.


Prossima pagina

Indice Webdesign