import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/*Importo tutto il pakage javax.swing. L'asterisco serve a
includere tutti gli elementi di quel pakage ma NON le
sottocartelle! Come è possibile notare subito sotto,
quando si fa l'import del pakage java.awt per poter usare
i layout, dobbiamo anche importare java.awt.event per usare
gli actionListener.
*/
public class ac_lis extends JFrame implements ActionListener
{
//Estendo JFrame per creare le finestre e si implementano gli
//actionListener (tramite l'interfaccia ActionListener)
JButton bottone_uno = new JButton("Cliccami!");
JButton bottone_due = new JButton("Clicca anche me!");
//I due bottoni
JPanel pann_principale = new JPanel();
//Il pannello che conterrà i bottoni
public ac_lis(String titolo)
{
/*Costruttore della classe. L'argomento String è la scritta
che andrà nella barra del titolo tramite l'istruzione qui sotto
*/
super(titolo);
GridLayout grid_lay = new GridLayout(1,2);
//Creiamo un layout a griglia per la nostra finestra...
pann_principale.setLayout(grid_lay);
//...e associamolo al pannello principale.
/*Per i più smaliziati e 'precoci' c'è da dire che si
poteva risparmiare una riga scrivendo direttamente
pann_principale.setLayout(new GridLayout(1,2));
ottenendo lo stesso risultato, ma siamo qui per imparare
ed è meglio fare tutti i passaggi.
*/
bottone_uno.addActionListener(this);
bottone_due.addActionListener(this);
//Associo l'action listener ai due bottoni
pann_principale.add(bottone_uno);
pann_principale.add(bottone_due);
/*Aggiungo i bottoni al pannello. Notate che vengono inseriti
da sinistra a destra (nelle righe) e finita la riga si passa
al quella sottostante, ripartendo da sinistra e andando verso
destra
*/
setContentPane(pann_principale);
pann_principale.setVisible(true);
/*Impostiamo pann_principale come ContentPane e lo
rendiamo visibile
*/
}
public static void main(String args[])
{
/*La funzione principale della nostra applicazione. Da qui
si crea la finestra e la si riempie con gli elementi creati
nella classe
*/
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, "Impossibile"+
" impostare lo stile "+e);
}
/*Impostiamo la GUI (interfaccia grafica) tramite l'UIManager,
dicendogli che la finestra deve apparire con lo stile del
sistema operativo usato (quindi con un solo codice, abbiamo
una UI differente se si usa Windows oppure uno Unix). Il
blocco try...catch verrà spiegato in una successiva lezione,
adesso prendetelo così come è.
*/
ac_lis es_lis = new ac_lis("Esempio di"+
" funzionamento degli action listeners by AlexMfM");
/*Creiamo una istanza della nostra classe. La stringa argomento
dell'oggetto è il titolo della finestra.
*/
es_lis.resize(300,50);
//Imposto le dimensioni della finestra
es_lis.show();
//'Mostriamo' la finestra
WindowListener l = new WindowAdapter()
{public void windowClosing(WindowEvent e)
{System.exit(0);
}
};
es_lis.addWindowListener(l);
/*Il windowListener serve per far sparire la finestra alla
pressione del tasto con la X nella barra menu. Creato questo
oggetto lo si assegna alla finestra.
*/
es_lis.setVisible(true);
//Rendiamo visibile la finestra
}
public void actionPerformed(ActionEvent evento)
{
/*Metodo che serve per gestire gli eventi. Il suo argomento
è l'evento che si è verificato.
*/
Object src = evento.getSource();
/*Creiamo una variabile di tipo Object che contenga l'elemento
dove si è verificato l'evento
*/
if (src==bottone_uno)
{
JOptionPane.showMessageDialog(null,
"Hai premuto il bottone a sinistra",
"Bottone sinistro premuto!",
JOptionPane.WARNING_MESSAGE);
/*Se l'oggetto su cui è accaduto l'evento è il primo
bottone appare un box di messaggio relativo ad esso.
*/
}
if (src==bottone_due)
{
JOptionPane.showMessageDialog(null,
"Hai premuto il bottone a destra",
"Bottone destro premuto!",
JOptionPane.WARNING_MESSAGE);
/*Se l'oggetto su cui è accaduto l'evento è il secondo
bottone appare un box di messaggio relativo ad esso.
*/
}
}
}