• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Gestione eventi - Gli eventi

TBH

Utente Master
Autore del topic
24 Dicembre 2012
2.134
115
Miglior risposta
0
Parte 1 : Applet e introduzione ad awt

Oggi tratteremo la gestione eventi in java. Il modello usato da java dopo la versione 1.1 è la delegazione dell'evento basato su 3 entità fondamentali .

  • L'evento
  • Il rilevatore di Eventi
  • L'origine Evento

Gli eventi sono rappresentati da classi che contengono e descrivono l'evento generato da un origine eventi il quale può avere più gestori eventi che controllano se tale evento sia avvenuto.In questa prima guida ci occuperemo esclusivamente delle varie classi di eventi (anche nella prossima guida), nella successive vedremo le interfaccie per rilevare gli eventi e le principali origine eventi presenti in java.awt.

Eventi
Gli eventi sono alla base appunto della gestione eventi , come descritto precedentemente. La superClasse degli eventi si trova in java.util ed è EventObject, tutti gli eventi derivano da questa classe.
La gestione eventi è delegata al package java.awt.event e la superclasse è AWTevent (che eredita da EventObject alcune peculiarità ) è indirettamente o direttamente alla base delle singole classi eventi che andremo ad analizzare.

ActionEvent
Evento generato dal click del mouse o dal doppio click del mouse. Per identificare i modificatori ci sono 4 costanti elencate di seguito :
ALT_MASK , CTRL_MASK, META_MASK e SHIF_MASK.
ActionEvent dispone di 3 costruttori :
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

orig rappresenta l'oggetto che ha generato l'evento quindi il nostro Orgine evento
tipo rappresenta il tipo di evento generato
cmd è la stringa di comando generata
modificatori indica una delle costatanti sopracitate (ciòè se è stato premuto alt ctrl etc..)
quando indica il momento in cui è stata eseguita l'azione (l'ora)

per ottenere informazioni sui modificatori usare
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
per ottenere l'ora di generazione eventi
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

AdjustamentEvent

Evento generato da una barra di scorrimento. definisce 5 costanti.

BLOCK_DECREMENT : l'utente ha fatto click per ridurre la barra di scorrimento
BLOCK_INCREMENT : l'utente ha fatto click per aumentare la barra di scorrimento
TRACK : usato il cursore del mouse per muovere la barra
UNIT_DECREMENT : L'utente ha fatto click sull'estremità della barra
UNIT_INCREMENT : L'utente ha fatto click sull'estremità della barra per aumentarne il valore



Il costruttore di AdjustableEvent:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

oggetto rappresenta colui che ha generato l'evento
l'id il codice evento
tipo : invece la regolazione dell'evento (se è diminuita aumentata la sbarra etc..)

tra i metodi più utilizzati sono :
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

ContainerEvent

Evento generato quando si aggiunge un componente all'interno di un altro.
definisce due costanti COMPONENT_ADDED & COMPONENT_REMOVED .
Costruttore :
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

base rappresenta il componente "contenitore"
tipo identifica se è stato rimosso o aggiunto un componente
agg rappresenta il componente rimosso o aggiungo

una tra le funzioni comunemente utilizzata è Component getContainer() e getChild()

ComponentEvent

evento generato quando si ridimensione, si nasconde , si rende visibile o quando si sposta un componente. ComponentEvent è alla base anche di molti altri eventi in modo diretto come nel caso di FocusEvent o indiretto come nel caso di MouseEvent e KeyEvent.
Definisce 4 costanti :
COMPONENT_HIDDEN
COMPONENT_MOVED
COMPONENT_RESIZED
COMPONENT_HIDDEN

il costruttore è il seguente:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

ogg= rappresenta il componente , quindi l'origine evento
tipo = rappresenta una delle costati elencate sopra

FocusEvent
come detto sopra eredita ComponentEvent , ed è generato quando si perde o riceve il focus su un componente, quindi definisce solo due costanti che rappresentano il tipo di evento.
FOCUS_GAINED : Il componete ha il focus
FOCUS_LOST: il componente non ha più il focus

i 2 Costruttori più comuni sono mostrati di seguito:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

obj rappresenta il componente che ha generato l'evento
tipo indica una delle due costanti
temp indica se il focus è temporaneo

spesso è utile sapere chi ha perso il focus o chi l'ha ottenuto. Per esempio se è stato ottenuto il FOCUS , chiamando getOppositeComponent() si ottiene il componente che ha perso focus , viceversa se il componente obj ha perso il focus chiamando getOppositeComponent() si ottiene chi ha ottenuto il focus.
Signature del metodo:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

per sapere invece se il cambiamento del focus è temporaneo usare : isTemporary();

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

InputEvent
è una sottoclasse di ComponentEvent , ma è una classe astratta e viene concretamente implementata dagli eventi MouseEvent e KeyEvent
Verrà analizzata in dettaglio successivamente ,quando posterò la continuazione delle Classi d'evento.


Per Questa 2° guida sulla grafica e le applet è tutto :bye:
 
Ultima modifica da un moderatore:
  • Like
Reactions: 1 person
Perfetto @TBH , le tue guide sono molto utili e ben dettagliate!

P.s. Aggiusto solo una parte dove hai sbagliato un BBcode ;)
 
@Ignazio96
grazie , non me ne ero nemmeno reso conto del bbcode.
Sperando che queste guide riattivino la sezione java o l'interesse per questo linguaggio che in ambito professionale è molto usato ... anche se ha difetti per quanto riguarda il consumo di memoria comunque prestando attenzione alla stesura del code in parte si può ovviare :emoji_relieved:
 
Buono buono, ti ringrazio come Ignazio per queste tue guide! Molto utili e dettagliate, sperando che a qualcuno possa servire. ^^