Академический Документы
Профессиональный Документы
Культура Документы
Los eventos permiten al programa interactuar con el usuario. Siempre que se utiliza el
ratón o el teclado, se genera un evento que describe de una manera exacta lo que ha
ocurrido.
SISTEMA ANTIGUO
En Java podemos distinguir dos clases de eventos:
Eventos generales o simples: son eventos producidos por una acción general. Por
ejemplo, pulsar una tecla, mover el ratón ...etc. En la tabla siguiente se muestran los
eventos estándar para el teclado y el ratón:
Eventos específicos: son los eventos que más nos interesan en este capítulo y son
los eventos que se utilizan con más frecuencia en AWT. Imagine, por ejemplo, un
caso en el que tengamos varios botones. Si cada botón, al ser pulsado, no generase
un evento único ¿cómo reconoceríamos el botón que ha sido pulsado?. Por esta
razón, existen los llamados eventos específicos, en el sentido de que contienen más
información que los eventos generales sobre el componente que ha generado el
evento.
Los eventos generados por componentes aparecen en la siguiente tabla:
.....
.....
default: super.handleEvent(e); // el evento no se maneja aquí, de
break; // manera que la responsabilidad se le
} // pasa a la superclase
}
2. Pasar los eventos a un método action().
Pero no todos los componentes UI generan eventos action, por lo que si queremos atrapar
eventos que no estén en la tabla anterior deberemos construir un método handleEvent(),
de propósito general.
Ejemplo:
- ID: identificador del evento. (Ver tabla EVENTOS ESTÁNDAR PARA TECLADO Y RATÓN).
- target: es el objetivo de un evento, es decir, de donde proviene el evento. (Por ejemplo,
de un área de texto, de una barra de desplazamiento ...etc.).
- when: momento en el que se generó el evento.
- x,y: coordenadas en las que se generó el evento.
- key: tecla pulsada. Es especialmente útil para eventos de teclado.
- arg: argumento de tipo Object, que es el argumento asociado a un evento (como, por
ejemplo, el nombre del botón seleccionado).
- modifiers: estado de las teclas modificadoras cuando se genera un evento.
java.awt.AWTEvent
o java.awt.event.ActionEvent
o java.awt.event.AdjustmentEvent
o java.awt.event.ComponentEvent
java.awt.event.ContainerEvent
java.awt.event.FocusEvent
java.awt.event.InputEvent
java.awt.event.PaintEvent
java.awt.event.WindowEvent
o java.awt.event.ItemEvent
o java.awt.event.TextEvent
Existen dos niveles de eventos: eventos de bajo nivel y eventos de alto nivel.
Estos eventos se producen cuando el usuario pulse alguna tecla o efectúe algún
movimiento con el ratón, o también cuando se modifique o visualice algún componente
en la pantalla.
Las clases asociadas son:
Métodos de KeyEvent
getKeyChar ( ) Devuelve el carácter asociado con la tecla que produjo el evento
getKeyCode( ) Devuelve el código de la tecla que produjo el evento
getKeyModifiers( Devuelve una cadena que indica el modificador de la tecla, por
) ejemplo "Shift"
getKeyText(int) Devuelve una cadena que indica el tipo de tecla pulsada, por ejemplo
F1, indicando que se trata de una tecla de función
isActionKey( ) Devuelve se la tecla es una tecla de "acción"
Métodos de MouseEvent
getClickCount( ) Devuelve el número de clics de ratón asociados con el evento
getX( ) Devuelve la posición x cuando se genera el vento
getY( ) Devuelve la posición y cuando se genera el evento
Devuelve si es o no un evento de tratón del tipo pop-up
isPopupTrigger()
menú para esta plataforma
translatePoint(int posx,int Traslada la posición de las coordenadas del vento a posx y
posy) posy
Son aquellos que tienen que ver con la semántica de los componentes. Así por ejemplo,
se generarán cuando se pulse un botón o cuando se se cambie el texto de un campo de
texto. Las clases asociadas a este nivel son:
Para poder capturar tanto los eventos de bajo nivel, como los de alto, Java proporciona las
clases de escucha (Listeners). Estas clases son interfaces. Para cada tipo de evento existe
una clase de escucha. Cada clase de escucha contiene la declaración de un conjunto de
métodos, a los que se llamarán dependiendo del evento producido.
A continuación vamos a mostrar las clases de escucha con sus correspondientes métodos
abstractos:
Clases Métodos Descripción
ActionListener actionPerformed(ActionEvent e) Ejecuta algún comando
adjustamentValueChanged(Adjusta
AdjustmentListener Ajusta algún valor
mentEvent e)
componentHidden(ComponentEven
ComponentListener El componente se oculta
t e)
componentMoved(ComponentEvent
El componente se mueve
e)
componentResized(ComponentEven El componente se
t e) redimensiona
componentShown(ComponentEvent
El componente se visualiza
e)
Se añade un componente el
ContainerListener componentAdded(ContainerEvent e)
contenedor
componentRemoved(ContainerEven Se elimina un componente
t e) del contenedor
El componente obtiene el
FocusListener focusGained(FocusEvent e)
foco
El componente pierde el
focusLost(FocusEvent e)
foco
Se modifica el estado de
algún elemento del
ItemListener ItemStateChanged(ItemEvent e) componente, como puede
ser la elección de alguna
casilla de verificación
KeyListener keyPressed(KeyEvent e) Se ha pulsado una tecla
keyReleased(KeyEvent e) Se ha soltado la tecla
keyTyped(KeyEvent e) Se ha tecleado un carácter
Se ha pulsado el botón del
MouseListener mouseClicked(MouseEvent e)
ratón
El puntero del ratón ha
mouseEntered(MouseEvent e)
entrado en el componente
El puntero del ratón ha
mouseExited(MouseEvent e)
salido del componente
Se ha presionado un botón
mousePressed(MouseEvent e)
del ratón
Se ha soltado un botón del
mouseReleased(MouseEvent e)
ratón
MouseMotionListener mouseDragged(MouseEvent e) Se está desplazando el ratón
con el botón pulsado
El puntero del ratón ha
mouseMoved(MouseEvent e)
cambiado de posición
El contenido del texto del
TextListener textValueChanged(textEvent e)
componente ha cambiado
WindowListener windowActivated(WindowEvent e) La ventana ha sido activada
windowClosed(WindowEvent e) Se ha cerrado la ventana
Se ha solicitado cerrar la
windowClosing(WindowEvent e)
ventana
windowDeactivated(WindowEvent La ventana ha sido
e) desactivada
Cuando se restaura la
windowDeiconified(WindowEvent e) ventana a su tamaño
original o se maximiza
windowIconofied(WindowEvent e) Se ha minimizado la ventana
windowOpened(WindowEvent e) se ha abierto la ventana
Una vez creados los componentes, debemos indicar qué clase de escucha vamos a
implementar a cada componente. Para ello, debemos utilizar la siguiente línea de código:
nombreDelComponente.addClaseDeEscucha( ); donde ClaseDeEscucha es el nombre de la
clase de escucha según los nombres reseñados en la tabla anterior.
Pero uno de los problemas que tienen las interfaces es que debemos definir todos sus
métodos abstractos en las clases que las implementan. Así, si una de nuestras clases
implementa la interfaz WindowListener, deberá implementar todos los métodos asociados,
aún cuando sólo utilicemos uno de ellos. (El resto de los métodos tendrán una
implementación vacía). Por esta razón surgen las clases adaptadoras. Estas clases
adaptadoras se encargan de implementar todos los métodos del la clase de escucha. Así
sólo necesitaremos redefinir aquellos métodos que nos van a ser útiles para gestionar
eventos, sin preocuparnos del resto.
Para ello dedemos indicar que nuestra clase es una subclase del adaptador:
class LaQueSea extends Adaptador{
...
}
Sólo las clases que poseen más de un método tienen adaptador, y son los siguientes: