Corso di Java

(senza pretese)

Lezione dieci: un'applicazione.
Mettiamo in pratica quanto detto finora.


La nostra prima applicazione
Vediamo qui di seguito, in passi successivi, di creare la nostra prima applicazione funzionante. Per adesso ci limiteremo ad una applicazione che non salva o apre files, in quanto ancora non vi ho fatto vedere come si fa. Ma per non mettere troppa carne sul fuoco, e rischiare di farla bruciare prima di mangiarla, vediamo di raccattare un po' di elementi trattati nelle lezioni precedenti e di metterli insieme per creare qualcosa che funzioni.
Ognuno può avere il proprio metodo nel creare un progamma: qui di seguito ci sarà passo passo il metodo di creazione che uso io. Partendo da zero, o meglio dalla sola idea di quello che fare, creerò insieme a voi una applicazione che esegua le seguenti operazioni.
Fare inserire nome e cognome dell'utente in campi di testo. Inserire un breve commento in un'area di testo. Premere un bottone e far comparire un box di dialogo che visualizzi le informazioni immesse.
Riepilogando ci saranno:

Diamo inizio alle danze...
Per prima cosa, prima di mettere le mani al codice è bene prendere un pezzo di carta e disegnare uno schema di come dovranno essere posizionati gli elementi nella applicazione. Questo è molto utile perché permette di avere una 'guida' di aiuto per creare pannelli, scegliere i layout appropriati e posizionare gli oggetti.
Qui sotto (realizzato tramite una semplice tabella html) ecco lo schema che voglio dare al programma:

Label (info su come usare)
Label (nome) Campo di testo (per inserire nome)
Label (cognome) Campo di testo (per inserire il cognome)
Label (commento) Area di testo (per inserire il commento)
Bottone (per mostrare il dialog box)


Da qui possiamo intuire che ci serviranno 2 pannelli. Il primo sarà il pannello principale (quello che faremo diventare il content pane) con un borderlayout (posizioneremo la prima label in alto, a Nord, il bottone in basso, a Sud, e un altro pannello nel centro).
L'altro pannello servirà a contenere le label, i campi di testo e l'area di testo. Per questo pannello è necessaria una disposizione a griglia con 3 righe e 2 colonne. Vediamo quindi il codice necessario a generare il programma funzionante.
Attenzione: in azzurro ci sono i commenti:

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

/*Il pakage javax.swing.*; permette di usare gli elementi grafici
  come JTextField, JTextarea, JButton...
  Il pakage java.awt.*; ci serve per i layout.
  Il pakage java.awt.event.*; ci serve per gestire il click del mouse
  sopra il bottone
  ATTENZIONE: questi pakage non servono soltanto a questo!!!
              Qui ho scritto quello a cui ci servono in questa
              applicazione. Ci sono una marea di altri oggetti
              e proprieta' gestibili da questi pakages.
*/


public class Esempio extends JFrame  implements ActionListener
{

 /*Qui si dichiarano tutti gli elementi che compongono
   la nostra applicazione*/

 /*Le tre label per nome, cognome, commento e suggerimento*/

 JLabel nome = new JLabel("Inserire il nome:");
 JLabel cognome = new JLabel("Inserire il cognome:");
 JLabel commento = new JLabel("Inserire un commento:");
 JLabel suggerimento = new JLabel("Compilare i campi qui sotto"+
 " e premere il tasto in basso");

 /*I due campi di testo e l'area per il commento*/
 JTextField ins_nome = new JTextField();
 JTextField ins_cognome = new JTextField();
 JTextArea ins_commento = new JTextArea(10,10);

 /*Bottone per mostrare il box*/
 JButton mostra_box = new JButton("Mostra il dialog box");



  public Esempio(String titolo)
  {

   /*Questo serve per impostare la stringa nella barra del titolo*/
   super(titolo);

   /*Qui si creano i pannelli e i layout*/
   JPanel pannello_principale = new JPanel();
   JPanel pannello_centro = new JPanel();

   BorderLayout layout_pp = new BorderLayout();
   GridLayout layout_pcentro = new GridLayout(3,2);

   /*Applico i layout ai pannelli*/
   pannello_principale.setLayout(layout_pp);
   pannello_centro.setLayout(layout_pcentro);
   ;

   /*NOTA: per farvi capire meglio come funzionano li ho scritti
           in questa maniera, ma ci sarebbe un metodo piu'
           compatto ovvero creare soltanto i pannelli e poi scrivere:

           pannello_principale.setLayout(new BorderLayout());
           pannello_sx.setLayout(new GridLayout(2,3));
           pannello_dx.setLayout(new FlowLayout());
   */

   /*Posiziono checkbox, label e campi di testo nel pannello che
     andra' sulla sinistra dell'applicazione*/

   pannello_centro.add(nome);
   pannello_centro.add(ins_nome);

   pannello_centro.add(cognome);
   pannello_centro.add(ins_cognome);

   pannello_centro.add(commento);
   pannello_centro.add(ins_commento);

   /*Posiziono i vari elementi nel pannello principale*/
   pannello_principale.add("North", suggerimento);
   pannello_principale.add("South", mostra_box);
   pannello_principale.add("Center", pannello_centro);

   /*Aggiungo l'unico action listener che ci serve.
     Il 'this' dell'argomento significa che il codice
     che gestira' l'evento verra' scritto all'interno di
     questa classe
   */
   mostra_box.addActionListener(this);

   /*Imposto il content_pane e lo mostro.
     Usando swing questo va sempre fatto.
   */

    setContentPane(pannello_principale);
    pannello_principale.setVisible(true);



  }


  /*Funzione che fa partire il tutto*/
  public static void main (String[] args)
  {

   /*Creo una finestra dalla classe Esempio. L'argomento della
     chiamata di funzione e' il testo della barra del titolo.
   */
   JFrame applicazione = new Esempio("Applicazione di prova by AlexMfM");

   /*Il seguente codice serve per gestire il pulsante di chiusura
     della finestra. Non fateci troppo caso, copiatelo pari pari
   */
   WindowListener wl = new WindowAdapter()
   {public void windowClosing(WindowEvent e){System.exit(0);}};

   /*Si aggiunge il WindowListener creato sopra*/
   applicazione.addWindowListener(wl);

   /*Si impostano le dimensioni della finestra e
     si rende visibile
   */

   applicazione.setSize(500,200);
   applicazione.setVisible(true);

   /*Blocco try...catch per impostare lo stile grafico della
     finestra. Qui si usa lo stile del sistema operativo su
     cui si usa l'applicazione. Dato che questa parte di codice
     potrebbe generare un errore (non si riesce a impostare lo stile,
     si intercetta nel blocco catch e se tale errore si verifica
     viene fatto apparire un messageDialog che ci avverte.
   */
   try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
       }
   catch (Exception e)
   {
    JOptionPane.showMessageDialog(null,"Impossibile impostare lo stile: " + e);
   }



  } //Fine di main()


  /*La string conterra' il messaggio da inserire nel dialog box.
    Questa stringa viene usata dentro il metodo actionPerformed.
  */
  String messaggio = new String();



  /*Metodo che gestisce gli eventi catturati da ActionListener
    L'argomento e' l'evento che viene generato*/
  public void actionPerformed(ActionEvent evento)
 {

  /*Questo serve per identificare l'oggetto che e' stato
    la sorgente dell'evento intercettato
  */
  Object sorgente = evento.getSource();

  /*Gestiamo la pressione del bottone*/
  if(sorgente == mostra_box)
  {
   /*Componiamo il messaggio da far apparire usando delle stringhe
     unite al metodo getText() sui campi di testo e sulla TextArea
     per prendere le stringhe in essi contenute
   */
   messaggio = "Nome: "+ins_nome.getText()+"\n"+
               "Cognome: "+ins_cognome.getText()+"\n"+
               "Commenti: "+ins_commento.getText();

  JOptionPane.showMessageDialog(null, messaggio, "Risultati", JOptionPane.PLAIN_MESSAGE);

  /*Primo argomento: Componente genitore (non fateci caso e lasciate null)
    Secondo argomento: Il testo del box
    Terzo argomento: Testo della barra del titolo
    Quarto argomento: Icona
  */
  }


 }


}




Questo è un programma molto semplice e dall'utilità quasi nulla, se non quella di farvi capire come si dispongono gli oggetti, come si crea una finestra e come si gestisce un semplice evento come è il click su di un bottone. Inoltre spero abbia fatto capire la 'filosofia' che si applica quando si dispongono gli oggetti all'interno della finestra. Magari ci vorrà qualche tentativo, ma con l'esperienza imparerete a vedere a occhio come devono essere disposti gli oggetti (e con quali accorgimenti) e come interagire con l'applicazione.
Se poi volete divertirvi a vedere cosa si può fare con un pizzico di esperienza in più (lungi da me il vantarmi di essere un guru del Java, anche se c'era un tempo in cui assieme ad alcuni amici ci appellavamo -più per autoironia che per altro- i JavaLords!!!) fate un salto nella sezione download e scaricatevi qualche (se non tutti!!!) i programmi in Java che ho fatto.
Alla prossima.

Prossima pagina

Indice Webdesign