Distintas
clases de Eventos
El
paquete java.awt.event
define varios tipos de eventos que son generados por varios elementos
de interfase de usuario. Entre los más comunes eventos utilizados
están las siguientes clases:
Clase
de Evento
|
Descripción |
ActionEvent |
Generado
cuando un botón es seleccionado, una
lista
(vista mas adelante) tiene un doble clic
o
un menú es seleccionado
|
AdjustmentEvent |
Generado
cuando un barra de desplazamiento es manipulada
|
ComponentEvent |
Generado
cuando un componente es escondido, movido,
cambiado
de tamaño, o se hace visible.
|
ItemEvent |
Generado
cuando una caja de chequeo (vista mas adelante)
es
seleccionada con el ratón.
|
Distintas
clases de Escuchadores
Los
escuchadores son creados para implementar una o más de las
interfases definidas por el paquete java.awt.event.
Cuando un evento ocurre el evento fuente invoca el método apropiado
definido por el escuchador y provee un objeto tipo evento como su
argumento. Entre
los más comunes estan:
Clase
de Interfase
|
Descripción |
ActionListener |
Define
un método para recibir eventos de acción
(ActionEvent) |
AdjustmentListener |
Define
un método para recibir eventos de deslizadores
(AdjustmentEvent) |
ComponentListener |
Define
cuatro método para reconocer cuando un componente
es
escondido, movido, cambiado de tamaño o mostrado
(ComponentEvent). |
ItemListener |
Define
un método para reconocer cuando el estado
De
un campo cambia (ItemEvent).
|
Es
importante que si queremos revisar los métodos que requerimos
entremos a revisar en la documentación de Java (www.java.sun.com)
las clases mostradas anteriormente para saber que métodos podemos
utilizar para implementar el evento deseado.
A continuación
mostramos algunos eventos diferentes a los de botón.
Eventos
de Barra de Desplazamiento
En
estos eventos hacemos uso de barras de desplazamiento para realizar
alguna instrucción o grupo de instrucciones, y para esto es
importante tomar eventos de la clase Scrollbar.
Los objetos de la clase Srollbar son escuchados a través de
implementar una interfaz llamada AdjustmentListener,
la cual utiliza el método adjustmentValueChanged,
un método muy parecido al actionPerformed, pero trabaja sobre
diferentes elementos de interfaz gráfica.
Para
entender este applet debemos consultar la clase ScrollBar que se
encuentra en el paquete java.awt. Esta clase tiene diferentes
constructores que pueden ser utilizados para crear el objeto de la
barra deslizadora, tomemos uno de los disponibles en la siguiente
tabla que aparece en las clases de la API de Java:
Tomemos
el tercer constructor, el cual es utilizado en este ejemplo, primero
esta la orientación, que es un entero y en este caso utilizaremos
uno definido en la misma clase Scrollbar.HORIZONTAL, después viene
un valor que es el valor inicial con el que queremos que empiece la
barra deslizadora, después esta el valor visible, si queremos que se
vea definimos un 1, posteriormente el valor mínimo de la barra, y el
máximo numero de números a tener.
Veamos
el applet:
import
java.awt.*;
import
java.applet.*;
import
java.awt.event.*;
//
<applet width="150" height="200"
code="AppletEventos2"></applet>
public
class AppletEventos2 extends Applet implements AdjustmentListener {
Label
l;
Scrollbar
s;
TextField
t;
public
AppletEventos2() {
l = new Label("Valor
de la barra de Scroll");
t =
new TextField(3);
s = new
Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 100);
add(s);
add(l);
add(t);
s.addAdjustmentListener(this);
}
public
void adjustmentValueChanged(AdjustmentEvent ae) {
int valor =
s.getValue();
t.setText(""+valor);
}
}
Dicho
applet muestra una barra de scroll que al ser deslizada muestra un
valor en el campo texto, como aparece en seguida:
Otro
ejemplo que puede ilustrar mejor el uso de una barra deslizadora es
el siguiente:
import
java.awt.*;
import
java.applet.*;
import
java.awt.event.*;
//
<applet width="150" height="200"
code="AppletEventos3"></applet>
public
class AppletEventos3 extends Applet implements AdjustmentListener {
Scrollbar
s;
int
barra = 0;
public
AppletEventos3() {
s = new
Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 100);
add(s);
s.addAdjustmentListener(this);
}
public
void paint(Graphics g) {
g.drawRect(40, 80, 60,
100);
g.fillRect(40, 80, 60,
barra);
}
public
void adjustmentValueChanged(AdjustmentEvent ae) {
barra = s.getValue();
repaint();
}
}
En
este ejemplo al mover la barra deslizadora se ve como va cambiando el
llenado del rectángulo, utilizando para ello el método fillRect de
la clase Graphics, el cual tiene como parámetros la coordenada en x,
la coordenada en y, el ancho y el alto en pixeles, rellenando de
color negro dependiendo del valor de la barra, es por esto que en el
método paint() se utiliza la variable barra:
En
el caso de este applet recurrimos a utilizar el método paint() para
que se redibuje cada vez que se mueve la barra deslizadora,
utilizando el metodo fillRect() rellenamos la parte del rectángulo.
Es importante hacer notar que la variable barra se definió al inicio
de la clase, para que cualquier método la pueda utilizar sin
problemas.
Eventos
del Ratón
Para
implementar este tipo de eventos debemos implementar la interfaz
MouseListener y MouseMotionListener.
A
continuación se muestra un ejemplo de applet que los utiliza. Cada
vez que el botón es presionado la palabra “Abajo” es desplegada
en el lugar donde está el apuntador del ratón. Cada vez que el
ratón es liberado, la palabra “Arriba” es mostrada. Si un botón
es oprimido el mensaje “Ratón oprimido” es desplegado en la
esquina superior izquierda del área del applet.
Cada
vez que el ratón entra o sale del área del applet, un mensaje es
desplegado. Cuando el ratón es arrastrado, un asterisco es mostrado,
el cual es arrastrado con el apuntador del ratón. Es importante
notar las dos variables mouseX
y mouseY
que guardan los lugares del ratón, cuando ocurre uno de los
siguientes eventos del ratón: presionado, liberado, o arrastrado.
Estas coordenadas son utilizadas dentro del método paint().
import
java.awt.*;
import
java.applet.*;
import
java.awt.event.*;
//
<applet width="150" height="200"
code="MouseEvents"></applet>
public
class MouseEvents extends Applet implements MouseListener,
MouseMotionListener
{
String
msg = "";
int
mouseX = 0;
int
mouseY = 0;
addMouseListener(this); // se añade el escuchador del ratón
//a este applet
addMouseMotionListener(this); // se añande el escuchador del movimiento
// del raton a este applet
}
public
void mouseClicked(MouseEvent me) {
mouseX
= 0;
mouseY
= 10;
msg
= "Ratón Oprimido";
repaint();
}
//
cuando el ratón entra
public
void mouseEntered(MouseEvent me) {
mouseX
= 0;
mouseY
= 10;
msg
= "Ratón Entra";
repaint();
}
//
cuando sale el ratón
public
void mouseExited(MouseEvent me) {
mouseX
= 0;
mouseY
= 10;
msg
= "Ratón Sale";
repaint();
}
// cuando se presiona
el ratón
public
void mousePressed(MouseEvent me) {
mouseX
= me.getX(); // se toma el valor de la coordenada de x
mouseY
= me.getY(); // se toma el valor de la coordenada de y
msg
= "Abajo";
repaint();
}
//
cuando se libera el ratón
public
void mouseReleased(MouseEvent me) {
mouseX
= me.getX();
mouseY
= me.getY();
msg
= "Arriba";
repaint();
}
// cuando se arrastra
el ratón
public
void mouseDragged(MouseEvent me) {
mouseX
= me.getX();
mouseY
= me.getY();
msg
= "*";
showStatus("Moviendo
el raton en " + mouseX + "," + mouseY);
repaint();
}
//
moviendo el ratón
public
void mouseMoved(MouseEvent me) {
showStatus("Moviendo
el raton en " + mouseX + "," + mouseY);
}
//
desplegando el mensaje en el applet
public
void paint(Graphics g) {
g.drawString(msg,
mouseX, mouseY);
}
}
Algunas
vistas del applet se dan a continuación:
No hay comentarios:
Publicar un comentario