GESTIONE DEGLI EVENTI

 


Elenco degli eventi gestiti dall’AWT 1.1

ActionListener

AdjustmentListener

ComponentListener

ContainerListener

FocusListener

KeyListener

MouseListener

MouseMotionListener

WindowEvent

ItemListener

TextListener

 


 

Java 1.0

Quando un utilizzatore aziona un componente viene creato un oggetto Event. Il sistema di cattura degli eventi dell’awt e passa l’evento stesso alla gerarchia Component, dando a ciascun componente la possibilita’ di reagire all’evento.

Ogni componente puo’ reagire all’evento in uno dei seguenti modi:

Ogni evento risulta nella creazione di un oggetto Event e contiene le seguenti informazioni:

La classe component definisce molti metodi per la cattura di eventi che si possono sovrascrivere, ad esclusione del metodo generale HandleEvent().

elenco dei metodi:

action() (Event.ACTION_EVENT)

mouseEnter() (Event.MOUSE_ENTER)

mouseExit() (Event.MOUSE_EXIT)

mouseMove() (Event.MOUSE_MOVE)

mouseDown() (Event.MOUSE_DOWN)

mouseDrag() (Event.MOUSE_DRAG)

mouseUp() (Event.MOUSE_Up)

keyDown() (Event.KEY_PRESS o Event.KEY_ACTION)

keyUp() (Event.KEY_RELEASE o Event.KEY_ACTION_RELEASE)

gotFocus() (Event.GOT_FOCUS)

lostFocus() (Event.LOST_FOCUS)

handleEvent() (tutti i tipi di eventi)

Il metodo action() e’ un metodo speciale (solo per i controlli di base: button, checkbox, choice, list, menuitem, textfield) generato per esempio dalla pressione di un tasto che permette di reagire ad un azione dell’utilizzatore senza preoccuparsi degli eventi di basso livello che causano l’evento (come il tasto premuto o il click del mouse)

Esempio:
//: TestEvent.java

import java.awt.*;

import java.awt.event.*; // Per la gestione degli eventi

public class TestEvent extends Frame {
	//Definizione dei componenti dell'interfaccia grafica
	Button b = new Button("Beep");
	public TestEvent() {
		//definizione della GUI
		add(b);
	}
	public boolean action(Event evt, Object arg) {
		if(evt.target.equals(b))
			System.out.println("Button b premuto");
	}
	public static void main(String args[]) {
		Frame f = new TestEvent();
		f.setTitle("Titolo della finestra");
		f.setSize(100,100);
		f.setVisible(true);
	}
}

 

Java 1.1

Nella nuova gestione degli eventi, essi sono generati da oggetti sources(sorgenti), e 1 o piu’ Listeners possono avere notifica di particolari eventi (da determinati sources). Ogni classe puo’ implementare un gestore di eventi e sara’ composta da queste parti essenziali:

  1. Dichiarazione che la classe implementa una listener interface.
  2. Public class MyClass implements ActionListener {

  3. Registrare una istanza di una classe "catturatrice" di eventi come listener per uno o piu’ componenti.
  4. SomeComponent.addActionListener(istanceOfMyClass);

  5. Implementare dei metodi dell’interfaccia listener.

Publiv void actionPerformed(ActionEvent e);

…. Codice che reagisce all’azione

Esempio:
//: ButtonEvent.java
import java.awt.*;
import java.awt.event.*; // Per la gestione degli eventi
public class ButtonEvent extends Frame {
	//Definizione dei componenti dell'interfaccia grafica
	Button b = new Button("Beep");
	public ButtonEvent() {
		//Definizione del listener
		b.addActionListener(new BL());
		//definizione della GUI
		add(b);
	}
	public class BL implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			System.out.println("button premuto");
		}
	}
	static class WL extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			System.exit(0);
		}
	}
	public static void main(String args[]) {
		Frame f = new ButtonEvent();
		f.setTitle("Titolo della finestra");
		f.setSize(100,100);
		f.setVisible(true);
	}
}

 

Nell’esempio ButtonEvent.java il Button b viene creato, aggiunto alla classe listener BL e visualizzato. La classe BL contiene il codice da eseguire in seguito alla pressione "b".

Il Button b puo’ essere aggiunto anche ad altre eventuali classi listener.

La classe BL puo’ essere definita listener non solo del Button b ma anche di altri oggetti contemporaneamente.

 

 

Elenco degli eventi gestiti dall’AWT 1.1

 

ActionListener

Evento Listener Add Remove
ActionEvent ActionListener addActionListener() removeActionListener()

Componenti che supportano l’evento:

Button

List

TextField

MenuItem

Metodi:

actionPerformed(ActionEvent)

Breve commento:

Quando si verifica uin evento action un messaggio viene inviato a tutti i listeners registrati.

Metodi: l’interfaccia ActionListener contiene 1 metodo: void actionPerformed(ActionEvent)

La classe ActionEvent definisce 2 metodi:

getActionCommand = fornesce la label del componente

getModifiers = per rileavre i tasti premuti (es. ActionEvent.SHIFT_MASK, CTRL_MASK, META_MASK e ALT_MASK).

Es. ActionEvent.getModifiers() & ActionEvent.SHIFT_MASK

 

 

 

AdjustmentListener

Evento Listener Add Remove
AdjustmentEvent AdjustmentListener addAdjustmentListener() removeAdjustmentListener()

Componenti che supportano l’evento:

Scrollbar

Metodi:

adjustmentValueChanged(AdjustmentEvent)

Breve commento:

Gli eventi adjustment notificano i cambiamenti dei componenti che implementano l’interfaccia adjustable.(essi hanno un valore intero e generano tale evento quando cambia tale valore es. scroll bar e scroll panel.

Eventi:

TRACK trascinamento

UNIT INCREMENT

UNIT DECREMENT

BLOCK INCREMENT

BLOCK DECREMENT

Metodi: void adjustment ValueChanged (AdjustmentEvent) = notifica che il valore del componente è cambiato.

 

ComponentListener

Evento Listener Add Remove
ComponentEvent ComponentListener addComponentListener() removeComponentListener()

Componenti che supportano l’evento:

Component

Button, Canvas, Chechbox, Choice, Container, Panel, Applet, ScrollPane, Window, Dialog, FileDialog, Frame, Label, List, Scrollbar, TextArea, TextField

Metodi:

componentHidden(ComponentEvent)

componentShown(ComponentEvent)

componentMoved(ComponentEvent)

componentResized(ComponentEvent)

Adapter

ComponentAdapter

Breve commento:

Un evento component è generato quando un oggetto omponents è nascosto, reso visibile, spostato o ridiminsionato.

Metodi: l’interfaccia ComponentListener e la corrispondente ComponentAdapter contengono 4 metodi :

void componentHidden(ComponentEvent)

void componentMoved(ComponentEvent)

void componentResized(ComponentEvent)

void componentShown(ComponentEvent)

La classe ComponentEvent ha un solo metodo getComponent() che restituisce il componente che ha generato l’evento

 

ContainerListener

Evento Listener Add Remove
ContainerEvent ContainerListener add ContainerListener() remove ContainerListener()

Componenti che supportano l’evento:

Container

Panel, Applet, ScrollPane, Window, Dialog, FileDialog, Frame

Metodi:

componentAdded(ContainerEvent)

componentRemoved(ContainerEvent)

Adapter

ComponentAdapter

Breve commento:

Eventi container sono generati dopo che un componente è aggiunto o tolto da un container.

Metodi: getChild() = restituisce il componente, getContainer() = restituisce il container

 

FocusListener

Evento Listener Add Remove
FocusEvent FocusListener add FocusListener() remove FocusListener()

Componenti che supportano l’evento:

Component

Button, Canvas, Chechbox, Choice, Container, Panel, Applet, ScrollPane, Window, Dialog, FileDialog, Frame, Label, List, Scrollbar, TextArea, TextField

Metodi:

focusGained(FocusEvent)

focusLost(FocusEvent)

Adapter

FocusAdapter

Breve commento:

Eventi Focus sono generati quando un componente riceve o perde il fuoco.

Metodi: L’interfaccia FucusListener e la corrispondente FocusAdapter contengono 2 metodi:

void focusGained(FocusEvent);

void focusLost(FocusEvent);

La classe FocusEvent definisce 1 metodo: isTemporary che rotorna true se l’oggetto ha perso il fuoco perché lo ha perso la sua windows.

 

KeyListener

Evento Listener Add Remove
KeyEvent KeyListener add KeyListener() remove KeyListener()

Componenti che supportano l’evento:

Component

Button, Canvas, Chechbox, Choice, Container, Panel, Applet, ScrollPane, Window, Dialog, FileDialog, Frame, Label, List, Scrollbar, TextArea, TextField

Metodi:

KeyPressed(KeyEvent)

KeyReleased(KeyEvent)

KeyTyped(KeyEvent)

Adapter

KeyAdapter

Breve commento:

Eventi Key sono generati da componenti che hanno il focus in seguito alla digitazione di tasti.

Metodi: l’interfaccia KeyListener e la corrisp. classe KeyAdapter contengono 3 metodi:

void keyTyped(KeyEvent)

void keyPressed(KeyEvent)

void keyReleased(KeyEvent)

La classe KeyEvent definisce i seguenti metodi:

int getKeyChar()

void setKeyChar(char)

int getKeyCode() KeyCode = costanti per tasti comuni(VK_A = A, VK_ESCAPE = ESC)

int setKeyCode(int)

void setModifiers(int)

La classe KeyEvent estende InputEvent che estende ComponentEvent.

ComponentEvent fornisce quindi il metodo getComponent().

InputEvent definisce i seguenti metodi:

int getWhwn()

boolean isAltDown()

boolean isControlDown()

boolean isMetaDown()

boolean isShiftDown()

int getModifiers()

 

MouseListener

Evento Listener Add Remove
MouseEvent MouseListener add MouseListener() remove MouseListener()

Componenti che supportano l’evento:

Component

Button, Canvas, Chechbox, Choice, Container, Panel, Applet, ScrollPane, Window, Dialog, FileDialog, Frame, Label, List, Scrollbar, TextArea, TextField Label, List, Scrollbar

Metodi:

mouseClicked(MouseEvent)

mouseEntered(MouseEvent)

mouseExited(MouseEvent)

mousePressed(MouseEvent)

mouseReleased(MouseEvent)

Adapter

MouseAdapter

Breve commento:

Sono generati dall’interazione del mouse con i componenti.

Metodi: l’interfaccia MouseListener e la corrisp. classe MouseAdapter contengono 3 metodi:

void mouseClicked(MouseEvent)

void mouseEntered(MouseEvent)

void mouseExited(MouseEvent)

void mousePressed(MouseEvent)

void mouseReleased(MouseEvent)

La classe MouseEvent oltre ad estendere InputEvent e ComponentEvent (vedi sopra) definisce i seguenti metodi:

int getClickCount()

int getX()

int getY()

point getPoint()

 

MouseMotionListener

Evento Listener Add Remove
MouseEvent MouseMotionListener add MouseMotionListener() remove MouseMotionListener()

Componenti che supportano l’evento:

Component

Button, Canvas, Chechbox, Choice, Container, Panel, Applet, ScrollPane, Window, Dialog, FileDialog, Frame, Label, List, Scrollbar, TextArea, TextField

Metodi:

mouseDragged(MouseEvent)

mouseMoved(MouseEvent)

Adapter

MouseMotionAdapter

Breve commento:

Sono generati dallo spostamento del cursore sullo schermo.

Metodi: l’interfaccia MouseMotionListener e la corrisp. classe MouseMotionAdapter contengono 2 metodi:

void mouseDragged(MouseEvent)

void mouseMoved(MouseEvent)

 

 

WindowEvent

Evento Listener Add Remove
WindowEvent WindowListener add WindowListener() remove WindowListener()

Componenti che supportano l’evento:

Window

Dialog, FileDialog, Frame

Metodi:

windowOpened(WindowEvent)

windowClosing(WindowEvent)

windowClosed(WindowEvent)

windowActivated(WindowEvent)

windowDeactivated(WindowEvent)

windowIconified(WindowEvent)

windowDeiconified(WindowEvent)

Adapter

WindowAdapter

Breve commento:

Eventi window sono generati quando una windows viene aperta, chiusa, modificata, deiconificata, attivata o deattivata.

Metodi: l’interfaccia W.Listener e la classe W.Adapter contengono 7 metodi:

void windowOpened(WindowEvent)

void windowClosed(WindowEvent)

void windowIconified(WindowEvent)

void windowDeiconified(WindowEvent)

void windowActivated(WindowEvent)

void windowDeactivated(WindowEvent)

La classe WindowEvent definisce il metodo getWindow che ritorna la window che ha generato l’evento.

 

ItemListener

Evento Listener Add Remove
ItemEvent ItemListener add ItemListener() remove ItemListener()

Componenti che supportano l’evento:

Checkbox, CheckboxMenuItem, Choice, List

Metodi:

itemStateChanged(ItemEvent)

Breve commento:

Eventi Item sono generati da componenti che implementano l’interfaccia ItemSelectable come check box, check menu, choice e list.

Metodi: void itemStateChanged(ItemEvent) = notifica che lo stato dell’item è cambiato.

La classe ItemEvent definisce i seguenti metodi:

Object getItem()

ItemSelectable getItemSelectable() = ritorna il componente che ha generato l’evento.

Int getStateChange() = ritorna il nuovo valore dell’item (SELECTED o DESELECTED).

 

TextListener

Evento Listener Add Remove
TextEvent TextListener add TextListener() remove TextListener()

Componenti che supportano l’evento:

TextComponent

TextArea

TextField

Metodi:

textValueChanged(TextEvent)

Breve commento:

Eventi text sono generati quando cambia il testo in un componente testo.

Metodi: void textValueChanged(TextEvent)

La classe TextEvent non ha particolari metodi escluso getSource che eredita da EventObject.

 

 

 

Classi adapter e Inner

Escluso ActionListener la maggior parte delle interfacce listener dell’AWT contengono più di un metodo: es. MuoseListener contiene 5 metodi (mousePressed, mouseReleased, mouseEntered, mouseExited e mouseClicked). Una classe che implementa la MouseListeners deve implementare anche tutti e 5 i suoi metodi (che possono avere anche un corpo vuoto). Per evitare questo l’AWT fornisce una classe adapters per ogni interfaccia listener, (es, MouseAdapter) che implementa una versione vuota di tutti i suoi metodi.

Es.

MyClass extends MouseAdapter {

…..

someObject.addMouseListener(this);

….

public void mouseClicked (MouseEvent e) {

… implementazione dell’EventHandle

}

}

Poiché java non permette l’ereditarietà multipla (es. un applet non può ereditare la classe applet e la classe MouseEvent) si può definire una classe inner (una classe dentro una sottoclasse) che estende la classe MouseAdapter

Es.

MyClass extends Applet{

….

SomeObject.addMouseListener(new MyAdapter());

….

static class WL extends WindowAdapter {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

}

}

Per le interfacce listener che possiedono piu’ di un metodo, viene fornito un "adapter" che fornisce un metodo di default per ciascun metodo dell’interfaccia.

Ereditando l’adapter sara cosi’ sufficente sovrascrivere solo il metodo che bisogna cambiare.

Esempio:
//: ButtonEvent.java
import java.awt.*;
import java.awt.event.*; // Per la gestione degli eventi
public class ButtonEvent extends Frame {
//Definizione dei componenti dell'interfaccia grafica
Button b = new Button("Beep");
public ButtonEvent() {
//Definizione del listener
b.addActionListener(new BL());
//definizione della GUI
add(b);
}
public class BL implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("button premuto");
}
}
static class WL extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public static void main(String args[]) {
Frame f = new ButtonEvent();
f.setTitle("Titolo della finestra");
f.setSize(100,100);
f.setVisible(true);
}
}


 


1