Le librerie AWT, componenti principali e gestione degli eventi
L'AWT, sigla di Abstract Window Toolkit, è un package introdotto nel 1996 che mette a disposizione la GUI (Graphical User Interface) all'utente programmatore per scrivere programmi utilizzando l'interfaccia grafica.
La libreria AWT si fonda su due elementi principali:
Componenti:I componenti sono elementi con il quale l'utente può interagire. Esempi di componenti sono i pulsanti, le etichette, le canvas e i textcomponent che si dividono in TextField e TextArea.
Contenitori:I contenitori sono oggetti che contengono altri elementi. Esempi di contenitori sono finestre, pannelli, frame e applet.
L'interazione della GUI da parte dell'utente si suddividono in:
Intercettare le azioni compiute dall'utente
Invocare dei specifici metodi da eseguire, associate ad un’azione compiuta dall’utente
I principali tipi di eventi possono essere classificati in:
Input da parte dell'utente (Pressione di un pulsante della tastiera o del mouse)
Eventi dell’interfaccia utente (Apertura di un menu)
Eventi delle finestre (Apertura della finestra)
Nel linguaggio Java vengono delegati i Listener (Ascoltatore-degli-eventi) per garantire e restituire eventi specifici per ogni azione compiuta dall’utente.
Per gestire gli Ascoltatori è necessario, quindi, usare due oggetti differenti:
L’oggetto che ascolta l’evento
L’oggetto che origina l’evento
Sono disponibili diversi Listener per la realizzazione di classi, che possono intercettare e gestire diversi eventi generati dai componenti di una GUI.
Tutti i contenitori e i componenti della libreria AWT comprendono i metodi ADD…Listener .
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Gioco extends Frame implements WindowListener, MouseListener {
private static int delay = 30;
private static int period = 1000;
private static int interval;
private static String secs;
private static Timer timer;
private static int x;
private static int y;
private static int j=70;
private static int n = 350-j;
private int point;
private static int i;
public Gioco() {
super("Hit The Ball");
setSize(400, 400);
setResizable(false);
setVisible(true);
setLocation(500, 200);
addWindowListener(this);
addMouseListener(this);
}
public void paint(Graphics g) {
g.setColor(Color.red);
g.fillOval(x,y,50,50);
g.setColor(Color.black);
g.drawString("Punteggio: " + point, 10,40);
g.setColor(Color.black);
g.drawString("Tempo: " + interval, 320,40);
}
public void windowIconified(WindowEvent event){}
public void windowDeiconified(WindowEvent event){}
public void windowActivated(WindowEvent event){}
public void windowDeactivated(WindowEvent event){}
public void windowOpened(WindowEvent event){}
public void windowClosed(WindowEvent event){}
public void windowClosing(WindowEvent event){System.exit(0);}
public void mouseClicked(MouseEvent event){eventOutput(event);}
public void mouseEntered(MouseEvent event){eventOutput(event);}
public void mouseExited(MouseEvent event){eventOutput(event);}
public void mousePressed(MouseEvent event){eventOutput(event);}
public void mouseReleased(MouseEvent event){eventOutput(event);}
public MouseEvent eventOutput(MouseEvent event) {
if( Math.abs(event.getX()-x)<49 && Math.abs(event.getY()-y)<49){
Random random = new Random();
if (interval != 0){
x = random.nextInt(n)+j;
y = random.nextInt(n)+j;
point=point+1;
this.repaint();
}
}
return event;
}
//Main.
public static void main(String[] args) {
Gioco gioco= new Gioco();
Random random = new Random();
x = random.nextInt(n)+j;
y = random.nextInt(n)+j;
secs="5";
timer = new Timer();
interval = Integer.parseInt(secs);
System.out.println(secs);
timer.scheduleAtFixedRate(new TimerTask()
{
public void run() {
System.out.println(setInterval());
if (interval == 0)
System.out.println("GIOCO TERMINATO!");
}
}, delay, period);
}
private static final int setInterval() {
if (interval == 1)
timer.cancel();
return --interval;
}
}