Una semplice GUI

Da Head First Java O'Reilly, capitolo 12.

Lasciamo la linea di comando per passare ad usare swing per costruirci una GUI.

Una prima semplice applicazione grafica:

import javax.swing.*;

public class SimpleGui {
public static void main(String[] args) {
JFrame f = new JFrame();
JButton b = new JButton("Hello!");

f.getContentPane().add(b);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
}

In pratica:
  • Creo un oggetto JFrame, ovvero una finestra sullo schermo.
  • Creo un oggetto JButton, un widget (oggetto grafico) che può essere aggiunto a una finestra.
  • Aggiuno il bottone al pannello dei contenuti della finestra (ottenuto con una chiamata a getContentPane()).
  • Specifico l'operazione da compiere alla chiusura della finestra.
  • Specifico la dimensione della finestra.
  • Rendo visibile la finestra.
Il risultato sarà quello di creare una finestra che contiene il bottone, che riempe tutto lo spazio a disposizione. Nel chiudere la finestra il programma viene terminato.

Per fare in modo che un click sul bottone possa essere interpretato dobbiamo fare in modo che qualcuno sia in ascolto sul bottone, e che possa quindi reagire agli eventi che il bottone genera.

Il bottone, in questo contesto viene visto come sorgente di eventi che possono essere intercettati e gestiti da un listener.

Riscriviamo l'esempio precedente facendo in modo che pigiare il bottone causi il cambiamento del testo associato.

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

public class SimpleGuiB implements ActionListener {
JButton button;

public SimpleGuiB() {
JFrame f = new JFrame();
button = new JButton("Hello!");
button.addActionListener(this);

f.getContentPane().add(button);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
button.setText("I've been clicked.");
}

public static void main(String[] args) {
SimpleGuiB gui = new SimpleGuiB();
}
}

La classe implementa ora l'interfaccia ActionListener, e quindi definisce il metodo actionPerformed(). Il bottone, a sua volta, registra la classe come listener per mezzo del metodo addActionListener().

Ogni evento generato dal bottone viene ora gestito dalla actionPerformed().

La sorgente di eventi, e l'oggetto evento, sono in genere gestiti da una classe preesistente (nel nostro caso JButton). Il lavoro normale dello sviluppatore consiste nello scrivere il listener. Si definisce una classe che implementa ActionListener, si scrive l'implementazione del metodo actionPerformed() per definire il comportamento in risposta all'azione osservata, e si registra il listener sulla sorgente di eventi.

Nessun commento:

Posta un commento