Corso di Java

(senza pretese)

Lezione quattro: creiamo una finestra


Un po' di teoria

Bisogna subito dire che quanto avete letto fino ad ora nelle pagine precedenti non può stare lì da sé, senza niente altro che specifichi elementi a cui applicare operatori, come mostrare i risultati e cose del genere. In questa parte cercherò di farvi capire cosa ci vuole per creare una finestra di una APPLICAZIONE Java.
Notate che ho scritto applicazione in maiuscolo perché in questo mini-corso verranno prese in considerazione solamente le applicazioni e non le applet. Questo perché per fare delle applet che facciano vedere simpatiche animazioni oppure per fare il giochino dei pulsanti animati al passaggio del mouse, esistono molti programmi che lo fanno automaticamente al posto nostro.
Inoltre, non è da sottovalutare il fatto che le applet sono alquanto limitate per quanto riguarda l'accesso alle risorse del sistema, e, ad esempio, non possono leggere o scrivere files. Dato che il bello di un programma può essere anche quello di archiviare le informazioni immesse e poi riprenderle successivamente, preferisco prendere in considerazione le applicazioni, perché permettono di farlo.
(Un semplice esempio: creare un archivio di oggetti).
Come dicevo, le cose non possono essere buttate là senza niente che specifichi a cosa appartengono.
Tutti gli elementi di una applicazione Java risiedono all'interno di una o più classi.
Per il nostro esempio, usiamo una sola classe che ci permetta di creare (per adesso) una finestra vuota.
Prima però di iniziare a vedere come creare una classe, bisogna fare una precisazione: è difficile se non impossibile che una classe funzioni da sola. Bisogna sempre fare riferimento ad altre classi che contengono elementi da inserire o da utilizzare nella nostra applicazione. Questi riferimenti vengono fatti usando la keyword import (che per chi conosce il C o il C++ è l'equivalente di #include).
Tramite questa keyword, seguita dal percorso di una classe da importare, si indica al compilatore a quale classe fare riferimento quando vengono utilizzati i vari oggetti (nota tecnica: non include fisicamente quelle classi nel codice macchina, ma si limita a dare il riferimento a dove "andarli a prendere", quindi le dimensioni dei file dell'applicazione non diventano mai mostruosamente grandi per colpa di inclusioni).
Via via che incontreremo le varie classi importate vi spiegherò a cosa servono (per una trattazione completa vi rimando a un buon manuale o alle references di Java).
Come ultima cosa prima di procedere vi segnalo che userò le classi Swing, una estensione del'AWT (Abstract Windowing Toolkit) che diciamo sia il sistema di base per le interfacce grafiche.

Creare una classe
Per creare una classe che contenga la nostra finestra bisogna procedere per passi.
  1. Importare le classi che vi servono. (Questo capiterà anche durante la stesura del codice di applicazioni, nel momento in cui si vogliano aggiungere nuove funzioni, ma per adesso possiamo tranquillamente non pensarci);
  2. Creare la classe vera e propria;
  3. Creare un metodo (con lo stesso nome della classe), che conterrà tutti gli elementi dell'applicazione;
  4. Creare una funzione main che conterrà i comandi per creare il frame e associargli un listener per catturare gli eventi nella finestra;
  5. Aggiustare un po' il tutto.

Importare altre classi
Come già detto, bisogna usare la keyword import . Per questo primo esempio ci bastano questi due:

import javax.swing.*;
import java.awt.event.*;


La prima serve a includere TUTTE le classi (indicate dall'asterisco) che appartengono al pakage "swing", e lo stesso viene fatto per il pakage di "event" (che gestisce gli eventi).

Creare la classe
Per creare la classe c'è bisogno del seguente codice:
public class Appl_1 extends JFrame
{
//Codice
}

Come vedete la classe "estende" la classe JFrame, ovvero è una sua sottoclasse.

Metodo che contiene gli elementi dell'applicazione
public Appl_1()
{
super("Titolo");
//Elementi dell'applicazione
}

Va messa all'interno della classe. Il metodo "super" serve per mettere il titolo nella barra del titolo della finestra.

Metodo "main"
Il metodo main deve essere dichiarato per far si che l'applicazione abbia un punto da dove iniziare. Di seguito c'è il codice necessario per eseguire l'applicazione stessa:

public static void main(String[ ] args)
{
JFrame finestra = new Appl_1();
WindowListener wl = new WindowAdapter()
{public void windowClosing(WindowEvent we)
  {System.exit(0);}
};
finestra.addWindowListener(wl);
finestra.setVisible(true);
}

Adesso veniamo alle spiegazioni:
la prima riga dichiara il metodo main come pubblico, statico e void (che non restituisce valori).
La seconda riga crea la finestra vera e propria dell'applicazione (chiamata qui molto fantasiosamente "finestra", ma, come dice un mio amico, la potete chiamare anche "mario", "giovanni" o "marco" :-D ). Successivamente viene creato un WindowListener. Breve nota sui Listeners.
Capiterà molto spesso di usare i Listeners per vari componenti, poiché sono il modo attraverso il quale Java gestisce l'interazione dell'utente con le varie parti che compongono una applicazione (bottoni, menu, e altro ancora).
Le righe successive sono del codice "standard", cioè che serve a fare chiudere l'applicazione quando viene chiusa la finestra. Non preoccupatevi di questo, limitatevi a rimetterlo pari pari nel vostro codice.
Successivamente viene aggiunto il Listener alla finestra con addWindowListener (come vedete i nomi dei metodi sono molto facili da capire e ricordare!) e in seguito viene reso visibile il frame.
Ulteriore considerazione sul metodo new.
new seguito dal costruttore di una classe, crea un nuovo oggetto di tale classe, preoccupandosi di gestire la memoria necessaria a tale operazione. Per coloro che conoscono il C o il C++, sappiate che non c'è bisogno di allocare memoria e deallocarla alla fine dell'operazione perché Java pensa da solo a farlo, tramite un metodo chiamato "garbage collection". (Per ulteriori informazioni, consultate un buon manuale o le references di Java).

Fatta anche questa bella predica, vediamo di unire qui sotto tutto il codice scritto in qualcosa che funzioni:

import javax.swing.*;
import java.awt.event.*;

public class Appl_1 extends JFrame
{

public Appl_1()
{
super("Titolo");
//Elementi dell'applicazione
}

public static void main(String[] args)
 {
  JFrame finestra = new Appl_1();
  WindowListener wl = new WindowAdapter()
   {public void windowClosing(WindowEvent we)
    {System.exit(0);}
   };
  finestra.addWindowListener(wl);
  finestra.setVisible(true);
 }
}

Potete anche provare a complilare questo codice, anche se non è che viene fuori molto (una finestra vuota). Nella prossima lezione inizieremo un breve viaggio all'interno di tutti i vari componenti che possono essere inseriti all'interno di una finestra, e faremo anche un piccolo esempio. Alla prossima, dunque!
Prossima pagina

Indice Webdesign