Introduzione alle interfacce grafiche in Java

Creare un’intefaccia grafica in Java con Swing e AWT

Java è linguaggio di programmazione tra i più diffusi al mondo che offre all’interno della propria libreria standard un framework per la realizzazione di interfacce grafiche (GUI). In questa lezione introdurremo i componenti base per creare delle interfacce grafiche che ci saranno utili per spiegare alcuni Design Pattern.

Il framework delle interfacce grafiche si basa sulle due librerie Swing e AWT (Abstract Windowing Toolkit). AWT è stata introdotta con la prima versione di Java (1.0), mentre Swing è stato inserito a partire dalla versione 1.2.
La libreria AWT per costruire una GUI utilizza gli elementi grafici (widget) del sistema operativo ospitante. Dato che col tempo è stato giudicato non conveniente, è stata sviluppata la libreria Swing che offre i propri elementi grafici in modo che siano identici per tutti i sistemi operativi.
Swing non è indipendente da AWT, anzi, ci si appoggia sopra occupandosi di disegnare il contenuto delle finestre, mentre ad AWT è stato lasciato il compito di occuparsi della cornice della finestra e della barra del titolo.

Gli elementi di un’interfaccia grafica: Frame, Button e Label

Per poter creare una finestra in Java bisogna creare un nuovo oggetto di tipo JFrame. Con la creare di questo nuovo oggetto, verrà creato in automatico un nuovo thread che si occupa della gestione eventi dell’interfaccia. La sua vita è indipendente dal thread che l’ha generato, se il thread contente il main termina, questo non avrà nessun impatto sula finestra.

Un frame è costituito da tre elementi:

  • Una cornice;
  • Un titolo;
  • Un pannello di contenuto (contentPane).

Vediamo un esempio pratico per la creazione di una finestra con Swing/AWT.

  public class FrameTest {

    public static void main(String []args) {
      final int WIDTH=200 , HEIGHT=200;

      // Creo la finestra
      JFrame frame = new JFrame();

      // Imposto le dimensioni iniziali
      frame.setSize(WIDTH, HEIGHT);

      // Imposto la finestra al centro
      frame.setLocation(350,350);

      // Imposto l'operazione di chiusura
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      // Mostro la finestra
      frame.setVisible(true);
    }
  }

Eseguendo il codice avremo:

Introduzione alle interfacce grafiche

L’applicazione terminerà solo quando l’utente cliccherà sull’apposita icona nella cornice della finestra.

Come aggiungere degli elementi ai JFrame

Per aggiungere oggetti come bottoni, caselle di testo ed altro bisogna aggiunge al contentPane del frame, sono tutte sottoclassi di Component. Per poter usare gli elementi all’interno della finestra dovremo:

  • Ottenere il contentPane del frame con il metodo getContentPane();
  • Scegliere il tipo di layout;
  • Aggiunge gli elementi desiderati al frame.

Ad esempio:

  package frametest;

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

  public class FrameTest {

    public static void main(String []args) {
      final int WIDTH=300 , HEIGHT=300;

      // Creo ed imposto la finestra
      JFrame frame = new JFrame();
      frame.setSize(WIDTH, HEIGHT);
      frame.setLocation(350,350);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      // Credo due bottoni
      JButton b1 = new JButton("Bottone 1"),
      b2 = new JButton("Bottone 1");

      // Credo una linea di testo
      JLabel l1 = new JLabel();

      // Credo un campo di testo
      JTextField t1 = new JTextField(50);
      t1.setText("Inserire il testo qui");

      // Imposto il contentPane
      Container c = frame.getContentPane();

      // Utilizzo il layout GridLayout
      c.setLayout(new GridLayout(2, 2));

      // Inserisco gli elementi nella finestra
      frame.add(b1);
      frame.add(b2);
      frame.add(l1);
      frame.add(t1);

      // Mostro la finestra
      frame.setVisible(true);
    }
  }

Eseguendo il codice:

Introduzione alle interfacce grafiche

Per impostare la dimensione di una finestra, oltre a setSize, esiste anche il metodo pack che consente di non indicare la dimensione della finestra. Applicando il pack al layout viene calcolata e impostata la dimensione minima della finestra in base agli elementi inseriti.

Infine per rendere visibile la finestra viene utilizzato setVisible(true). La finestra deve essere mostrato alla fine, se venisse mostrata prima dell’aggiunta degli oggetti potrebbero essere mostrati degli stadi intermedi della costruzione del frame ancora non definito.

Ecco l’indice della pagina con la lista completa di tutti i design pattern fate riferimento a questa pagina.

Pubblicato in Interfacce grafiche, Programmazione Taggato con: , , , , , , ,