SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
GESTIÓN DE EVENTOS



CURSO:                TALLER DE                           CICLO
                   PROGRAMACIÓN II                          III
Elaborado por:   Ing. Manuel Jesús Sánchez Chero        SEMANAS
                        Profesor del Curso


                    Material Didáctico para uso exclusivo en clase
Java :: Gestión de Eventos ::



INTRODUCCIÓN

La gestión de eventos, es el proceso de repuesta que se genera al hacer clic sobre un
botón, los movimientos del ratón, etc. Ha llegado hacer un tema complejo en java desde
la versión de java 1.1, la gestión de eventos ha cambiado significativamente. El modelo
actual se llama gestión de eventos delegado, En este modelo, se deber registrar
específicamente en java si se quiere gestionar un evento, como puede ser hacer clic
sobre un botón, la idea es que se mejore la ejecución si sólo se informa de los eventos al
código que necesita gestionarlo y no al resto.

Los eventos se registran implementando una interfaz de listener de eventos, estos son
los eventos de Listeners disponibles y los tipos de eventos que gestionan:


       Listener                           Descripción

 ActionListener                     Gestiona los eventos de acción, como hacer clic sobre
                                    los botones
 AdjustemenListener                 Gestiona los casos en los que un componente es
                                    escondido, movido, redimensionado o mostrado.

 ContainerListener                  Gestiona el caso en el que un componente coge o
                                    pierde el foco.
 ItemListener                       Gestiona el caso en el que cambia el estado de un
                                    elemento.

 KeyListener                        Recibe los eventos de teclado.

 MouseListener                      Recibe en los casos en que es pulsado el ratón, mete
                                    un componente, sale un componente o es presionado.

 MouseMotionListener                Recibe en el caso en que se arrastra o mueve el ratón.

 TextListener                       Recibe los cambios de valor de texto.

 WindowListener                     Gestiona los casos en que una ventana ésta activada,
                                    desactivada, con o sin forma de ícono, abierta,
                                    cerrada o se sale de ella.

Cada Listener es una interfaz y se debe implementar los métodos de la interfaz. A cada
uno de estos métodos se le pasa un tipo de objeto que corresponde al tipo de evento.




Ing. Manuel Jesús Sánchez Chero                                             Página 2 de 26
Java :: Gestión de Eventos ::



       Método                     Descripción

 ActionEvent               Gestiona botones, el hacer clic en la lista o hacer clic en un
                           elemento del menú.
 AdjustemenEvent           Gestiona los movimientos de la barra de desplazamiento.

 ComponentEvent            Gestiona el caso en el que un componente es escogido,
                           movido, redimensionado o llega a ser visible.
 FocusEvent                Gestiona el caso en el que un componente coge o pierde el
                           foco.

 InputEvent                Gestiona la marca de activación en una casilla de activación y
                           el hacer clic de un elemento de la lista, hacer selecciones en
                           los controles de opción y las selecciones de los elementos de
                           menú.
 KeyEvent                  Gestiona la entrada del teclado.

 MouseEvent                Gestiona los casos en que se arrastra el mouse, se mueve, se
                           pulsa, se presiona, se suelta o entra o sale un componente.
 TextEvent                 Gestiona el valor de un cuadro de texto o se ha cambiado.

 WindowEvent               Gestiona el caso en que una ventana ésta activada,
                           desactivada, en forma de ícono, sin forma de ícono, abierta,
                           cerrada o abandonada.

En la siguiente tabla se recogen las interfaces para cada tipo de suceso.

 Suceso (Event)             Interface (Listener)               Método
 ActionEvent               ActionListener                actionPerformed
 AdjustementEvent          AdjustementListener           adjustementValueChanged
 FocusEvent                FocusListener                 focusGained
                                                         focusLost
 ItemEvent                 ItemListener                  itemStateChanged
 KeyEvent                  KeyListener                   keyTyped
                                                         keyPressed
                                                         keyReleased
 MouseEvent                MouseListener                 mouseClicked
                                                         mouseEntered
                                                         mouseExited
                                                         mousePressed
                                                         mouseReleased
                           MouseMotionListener           mouseDragged
                                                         mouseMoved



Ing. Manuel Jesús Sánchez Chero                                             Página 3 de 26
Java :: Gestión de Eventos ::

 WindowEvent              WindowListener              windowActivated
                                                      windowClosed
                                                      windowClosing
                                                      windowDeactivated
                                                      windowDeiconified
                                                      windowIconified
                                                      windowOpened



La fuente de los sucesos mantiene una lista de objetos interesados (listeners) en los
mismos. Se añaden a la lista mediante una función denominada addXXXListener, donde
XXX es el tipo de suceso.

              boton.addActionListener(accion);



Se muestra los objetos fuente de sucesos y los tipos de objetos interesados en dichos
sucesos (listeners) que se pueden añadir (add)




                       Control               Interfaces

              Button                  ActionListener

              Choice                  ItemListener.

              Checkbox                ItemListener.

              Component               FocusListener
                                      KeyListener
                                      MouseListener
                                      MouseMotionListener
              List                    ActionListener
                                      ItemListener




Ing. Manuel Jesús Sánchez Chero                                        Página 4 de 26
Java :: Gestión de Eventos ::


IMPLEMENTANDO LISTENER

IMPLEMENTANDO LA INTERFAZ ACTIONLISTENER

Empecemos implementando la interfaz ActionListener, que gestiona los
eventos de acción, como hacer clic sobre los botones.

    Utilizando un Applet, empecemos creando la clase CreandoApplet


                                                        Nombre    de        la    Clase
                                                        CreandoApplet

                                                        En la super clase escribir
                                                        java.applet para que herede de
                                                        la clase Applet



                                                          Para       implementar       las
                                                          interfaces se debe hacer clic en
                                                          el botón Add.




                                                           Mostrará una ventana para
                                                           poder escoger las interfaces y
                                                           luego hacer clic en el botón
                                                           Ok.




Ing. Manuel Jesús Sánchez Chero                                       Página 5 de 26
Java :: Gestión de Eventos ::




                                                      Para terminar hacer clic en el botón
                                                      Finish, se mostrará el código de la
                                                      clase    CreandoApplet,   con    sus
                                                      respectivas librerías e interfaz
                                                      implementada.




                                                        Cómo puedes observar se ha creado el
                                                        método ActionPerformed.

                                                        Esto se debe a la implementación de la
                                                        interfaz ActionListener.




import java.applet.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Creandoapplet extends Applet implements ActionListener{

          public void actionPerformed(ActionEvent arg0) {

          }

}


    Como se ha implementado un applet hay que agregar de forma manual el
    método init() a la clase.

    import java.applet.*;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;

    public class Creandoapplet extends Applet implements ActionListener{
        public void init( ) {
              }
    public void actionPerformed(ActionEvent arg0) {

              }

    }




    Ing. Manuel Jesús Sánchez Chero                                   Página 6 de 26
Java :: Gestión de Eventos ::

    Utilizando un Frame, Ahora        crearemos   la    clase   CreandoFrame       e
     implementamos el ActionListener

                                                        Nombre    de       la    Clase,
                                                        Creandoframe


                                                        En la super clase escribir
                                                        java.awt.Frame para que
                                                        herede de la clase Frame.


                                                        Para       implementar       las
                                                        interfaces se debe hacer clic en
                                                        el botón Add.


                                                        En este caso se debe
                                                        implementar el método main
                                                        para ser la clase ejecutable.




                                                           Mostrará una ventana para
                                                           poder escoger las interfaces y
                                                           luego hacer clic en el botón
                                                           Ok.




Ing. Manuel Jesús Sánchez Chero                                        Página 7 de 26
Java :: Gestión de Eventos ::




                                                Para terminar hacer clic en el botón
                                                Finish, se mostrará el código de la
                                                clase    CreandoFrame,    con    sus
                                                respectivas librerías e interfaz
                                                implementada.




                                                Cómo puedes observar se ha creado el
                                                método ActionPerformed.

                                                Esto se debe a la implementación de la
                                                interfaz ActionListener.




  import java.awt.*;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;

  public class CreandoFrame extends Frame implements ActionListener {

         public void actionPerformed(ActionEvent arg0) {

         }

         public static void main(String[] args) {

         }

  }                                             Se ha creado el método main.

                                                Aquí se pueden crear objetos.




Ing. Manuel Jesús Sánchez Chero                                Página 8 de 26
Java :: Gestión de Eventos ::


IMPLEMENTANDO LA INTERFAZ ITEMLISTENER

Continuamos implementando la interfaz ItemListener, que gestiona el caso
en el que cambia el estado de un elemento.


                                                 Nombre de la Clase.



                                                  En la super clase escribir
                                                  java.awt.Frame para que
                                                  herede de la clase Frame.


                                                  Para       implementar       las
                                                  interfaces se debe hacer clic en
                                                  el botón Add.


                                                 En este caso se debe
                                                 implementar el método main
                                                 para ser la clase ejecutable.




                                                  Mostrará una ventana para
                                                  poder escoger las interfaces y
                                                  luego hacer clic en el botón
                                                  Ok.
                                                  En este caso escogemos la
                                                  interfaz ItemListener.




Ing. Manuel Jesús Sánchez Chero                                Página 9 de 26
Java :: Gestión de Eventos ::




                                               Para terminar hacer clic en el botón
                                               Finish, se mostrará el código de la
                                               clase ListaPosiciones, con sus
                                               respectivas librerías e interfaz
                                               implementada.




                                               Cómo puedes observar se ha creado el
                                               método itemStateChanged.

                                               Esto se debe a la implementación de la
                                               interfaz ItemListener.




 import java.awt.*;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;

 public class ListaPosiciones extends Frame implements ItemListener {

        public void itemStateChanged(ItemEvent arg0) {

        }

        public static void main(String[] args) {

        }

 }                                             Se ha creado el método main.

                                               Aquí se pueden crear objetos.




Ing. Manuel Jesús Sánchez Chero                               Página 10 de 26
Java :: Gestión de Eventos ::


IMPLEMENTANDO LA INTERFAZ KEYLISTENER

Ahora pasamos a implementar la interfaz KeyListener, que permite
gestionar la entrada del teclado.

                                         Nombre      de   la       Clase
                                         UtilizandoTeclas


                                         En la super clase escribir
                                         java.awt.Frame para que
                                         herede de la clase Frame.


                                         Para       implementar       las
                                         interfaces se debe hacer clic en
                                         el botón Add.


                                         En este caso se debe
                                         implementar el método main
                                         para ser la clase ejecutable.




                                          Mostrará una ventana para
                                          poder escoger las interfaces y
                                          luego hacer clic en el botón
                                          Ok.
                                          En este caso escogemos la
                                          interfaz KeyListener.




Ing. Manuel Jesús Sánchez Chero                          Página 11 de 26
Java :: Gestión de Eventos ::




                                                Para terminar hacer clic en el botón
                                                Finish, se mostrará el código de la
                                                clase UtilizandoTeclas, con sus
                                                respectivas librerías e interfaz
                                                implementada.




                                                Cómo puedes observar se ha creado
                                                los métodos keyPressed, keyReleased
                                                y keyTyped.

                                                Esto se debe a la implementación de la
                                                interfaz KeyListener.




import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class UtilizandoTeclas extends Frame implements KeyListener {

      public void keyPressed(KeyEvent arg0) {
                  }

      public void keyReleased(KeyEvent arg0) {
                  }

      public void keyTyped(KeyEvent arg0) {
                  }


      public static void main(String[] args) {

      }
}
                                                Se ha creado el método main.

                                                Aquí se pueden crear objetos.




Ing. Manuel Jesús Sánchez Chero                                  Página 12 de 26
Java :: Gestión de Eventos ::




IMPLEMENTANDO LA INTERFAZ MOUSELISTENER

Ahora nos toca revisar la implementación de la interfaz MouseListener,
que se utiliza en los casos en que es pulsado el ratón, mete un componente, sale un
componente o es presionado.

                                                       Nombre     de   la        Clase
                                                       UtilizandoMouse


                                                       En la super clase escribir
                                                       java.awt.Frame para que
                                                       herede de la clase Frame.


                                                       Para       implementar       las
                                                       interfaces se debe hacer clic en
                                                       el botón Add.


                                                       En este caso se debe
                                                       implementar el método main
                                                       para ser la clase ejecutable.




                                                           Mostrará una ventana para
                                                           poder escoger las interfaces y
                                                           luego hacer clic en el botón
                                                           Ok.
                                                           En este caso escogemos la
                                                           interfaz MouseListener.




Ing. Manuel Jesús Sánchez Chero                                      Página 13 de 26
Java :: Gestión de Eventos ::




                                             Para terminar hacer clic en el botón
                                             Finish, se mostrará el código de la
                                             clase UtilizandoMouse, con sus
                                             respectivas librerías e interfaz
                                             implementada.



                                             Cómo puedes observar se ha creado
                                             los  métodos        mouseClicked,
                                             mouseEntered,        mouseExited,
                                             mousePressed y mouseReleased.

                                             Esto se debe a la implementación de
                                             la interfaz MouseListener.




Import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class UtilizandoMouse extends   Frame implements
MouseListener {

       public void mouseClicked(MouseEvent arg0) {
       }

       public void mouseEntered(MouseEvent arg0) {
       }

       public void mouseExited(MouseEvent arg0) {
       }

       public void mousePressed(MouseEvent arg0) {
       }

       public void mouseReleased(MouseEvent arg0) {
       }

       public static void main(String[] args) {
       }

}                                            Se ha creado el método main.

                                             Aquí se pueden crear objetos.




Ing. Manuel Jesús Sánchez Chero                               Página 14 de 26
Java :: Gestión de Eventos ::


IMPLEMENTANDO LA INTERFAZ WINDOLISTENER

Por último implementaremos la interfaz WindowListener, que se utiliza
para gestionar los casos en que una ventana ésta activada, desactivada, con o sin forma
de ícono, abierta, cerrada o se sale de ella.

                                                         Nombre    de   la    Clase
                                                         TrabajandoConVentana


                                                          En la super clase escribir
                                                          java.awt.Frame para que
                                                          herede de la clase Frame.


                                                          Para       implementar       las
                                                          interfaces se debe hacer clic en
                                                          el botón Add.


                                                          En este caso se debe
                                                          implementar el método main
                                                          para ser la clase ejecutable.




                                                                Mostrará una ventana para
                                                                poder escoger las interfaces y
                                                                luego hacer clic en el botón
                                                                Ok.
                                                                En este caso escogemos la
                                                                interfaz WindowListener.




Ing. Manuel Jesús Sánchez Chero                                         Página 15 de 26
Java :: Gestión de Eventos ::




                                                 Para terminar hacer clic en el botón
                                                 Finish, se mostrará el código de la
                                                 clase TrabajandoConVentanas, con
                                                 sus respectivas librerías e interfaz
                                                 implementada.



                                                 Cómo puedes observar se ha creado
                                                 los métodos       winwdoActivated,
                                                 windowClosed,      windowClosing,
                                                 windowDeactivated,
                                                 windowDeiconifield               y
                                                 windowOpened.

                                                 Esto se debe a la implementación de
                                                 la interfaz MouseListener.


      import java.awt.*;
      import java.awt.event.WindowEvent;
      import java.awt.event.WindowListener;

      public class TrabajandoConVentanas extends Frame implements
      WindowListener {

             public void windowActivated(WindowEvent arg0) {
                   }

             public void windowClosed(WindowEvent arg0) {
                   }

             public void windowClosing(WindowEvent arg0) {
                   }

             public void windowDeactivated(WindowEvent arg0) {
                   }

             public void windowDeiconified(WindowEvent arg0) {
                   }

             public void windowIconified(WindowEvent arg0) {
                   }
                                                          Se ha creado el método main.
             public void windowOpened(WindowEvent arg0) { Aquí se pueden crear objetos.
                    }

             public static void main(String[] args) {
                   }
      }



Ing. Manuel Jesús Sánchez Chero                                  Página 16 de 26
Java :: Gestión de Eventos ::


    EJEMPLOS



Eventos de Botón

Ahora mostramos un ejemplo en el que utilizamos dos botones, un botón
para dibujar círculos en el applet al azar (empezando más debajo de la
coordenada 60, 80), el otro botón es para limpiar el applet.

import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class AppletCirculos extends Applet implements ActionListener {
  Label l1;
  TextField t1;
  Button b1,b2;
  boolean dibuja = false; // se inicializa dibuja en falso para no dibujar

  public AppletCirculos() {
    l1 = new Label("Circulos");
    t1 = new TextField(8);
    b1 = new Button("Dibuja");
    b2 = new Button("Limpia");
    add(l1);
    add(t1);
    add(b1);
    add(b2);
    b1. addActionListener(this);
    b2. addActionListener(this);
  }

  public void actionPerformed(ActionEvent ae) {
    if (ae.getSource() == b1) {
       dibuja = true;        // si el usuario selecciona dibujar se pone verdadero
    }
    if (ae.getSource() == b2) {
       dibuja = false; // si el usuario selecciona limpiar se pone en falso
    }
    repaint();
  }
    public void paint(Graphics g) {
         if (dibuja) { // si dibuja es verdadero se dibuja
                 g.setColor(Color.red); // se cambia a rojo el color de dibujo
                 int circulos = Integer.parseInt(t1.getText());
                // se toma el numero del texto



    Ing. Manuel Jesús Sánchez Chero                               Página 17 de 26
Java :: Gestión de Eventos ::


                for (int i = 1; i <= circulos ; i++) { // ciclo de circulos
                           int x1 = (int) (Math.random()*100)+60;
                           int y1 = (int) (Math.random()*100)+80;
                        g.drawOval(x1,y1, 50, 50); // se dibuja un circulo en
                                  // una posición al azar
                 }
        }
        else { // si dibuja es falso se limpia el applet
        g.setColor(Color.white);
        g.fillRect(0,0,200,200);
        }
    }
}

Algunos ejemplos de la vista del applet son:




    Ing. Manuel Jesús Sánchez Chero                              Página 18 de 26
Java :: Gestión de Eventos ::




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:




   Ing. Manuel Jesús Sánchez Chero                          Página 19 de 26
Java :: Gestión de Eventos ::




Tomemos el tercer constructor, el cual es utilizado en este ejemplo, primero
está 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 número de números a tener.

Veamos el applet:

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
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:




     Ing. Manuel Jesús Sánchez Chero                           Página 20 de 26
Java :: Gestión de Eventos ::




Utilizamos el método getValue de la clase Scrollbar para tomar el valor de la
barra deslizadora en base al movimiento que el usuario hizo en ella.

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.*;
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 cómo va cambiando el
llenado del rectángulo, utilizando para ello el método fillRect de la clase



     Ing. Manuel Jesús Sánchez Chero                           Página 21 de 26
Java :: Gestión de Eventos ::


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 método
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


    Ing. Manuel Jesús Sánchez Chero                            Página 22 de 26
Java :: Gestión de Eventos ::


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.*;

public class MouseEvents extends Applet implements MouseListener,
                                       MouseMotionListener {
  String msg = "";
  int mouseX = 0;
  int mouseY = 0;

  public void init() {
     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
  }

  // cuando se da un clic en el ratón
  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;


   Ing. Manuel Jesús Sánchez Chero                          Página 23 de 26
Java :: Gestión de Eventos ::


          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:




        Ing. Manuel Jesús Sánchez Chero                        Página 24 de 26
Java :: Gestión de Eventos ::




Ing. Manuel Jesús Sánchez Chero   Página 25 de 26
Java :: Gestión de Eventos ::




Ing. Manuel Jesús Sánchez Chero   Página 26 de 26

Más contenido relacionado

La actualidad más candente

Ingeniería de software II - Parte 1
Ingeniería de software II - Parte 1Ingeniería de software II - Parte 1
Ingeniería de software II - Parte 1Marta Silvia Tabares
 
3.doc. especificación de casos de uso
3.doc. especificación de casos de uso 3.doc. especificación de casos de uso
3.doc. especificación de casos de uso trabajo
 
Ejercicio máquina de turing
Ejercicio máquina de turingEjercicio máquina de turing
Ejercicio máquina de turingvmtorrealba
 
Tm03 modelo de casos de uso
Tm03 modelo de casos de usoTm03 modelo de casos de uso
Tm03 modelo de casos de usoJulio Pari
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoMarvin Zumbado
 
Uso de la función InputBox y MsgBox
Uso de la función InputBox y MsgBoxUso de la función InputBox y MsgBox
Uso de la función InputBox y MsgBoxLic. Rolando Torres
 
Diagrama de actividades
Diagrama de actividadesDiagrama de actividades
Diagrama de actividadesElvisAR
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmoNombre Apellidos
 
Macros vba word office
Macros vba word officeMacros vba word office
Macros vba word officefgu
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de controlLic_Vera
 
Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)Stalin Eduardo Tusa Vitar
 
Lenguaje C y los Sistemas Operativos Actuales
Lenguaje C y los Sistemas Operativos ActualesLenguaje C y los Sistemas Operativos Actuales
Lenguaje C y los Sistemas Operativos Actualesjuan_briceo
 
Instrucciones de control alternativas
Instrucciones de control alternativasInstrucciones de control alternativas
Instrucciones de control alternativasCarlos Pes
 

La actualidad más candente (20)

Ingeniería de software II - Parte 1
Ingeniería de software II - Parte 1Ingeniería de software II - Parte 1
Ingeniería de software II - Parte 1
 
3.doc. especificación de casos de uso
3.doc. especificación de casos de uso 3.doc. especificación de casos de uso
3.doc. especificación de casos de uso
 
Ejercicio máquina de turing
Ejercicio máquina de turingEjercicio máquina de turing
Ejercicio máquina de turing
 
Tm03 modelo de casos de uso
Tm03 modelo de casos de usoTm03 modelo de casos de uso
Tm03 modelo de casos de uso
 
Tecnicas de diseño
Tecnicas de diseñoTecnicas de diseño
Tecnicas de diseño
 
3.creacion de componentes visuales
3.creacion de componentes visuales3.creacion de componentes visuales
3.creacion de componentes visuales
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
 
Gramaticas y lic
Gramaticas y licGramaticas y lic
Gramaticas y lic
 
Uso de la función InputBox y MsgBox
Uso de la función InputBox y MsgBoxUso de la función InputBox y MsgBox
Uso de la función InputBox y MsgBox
 
Diagrama de actividades
Diagrama de actividadesDiagrama de actividades
Diagrama de actividades
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmo
 
Macros vba word office
Macros vba word officeMacros vba word office
Macros vba word office
 
Exposición Diagrama de Clases
Exposición Diagrama de ClasesExposición Diagrama de Clases
Exposición Diagrama de Clases
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Flujos y archivos
Flujos y archivosFlujos y archivos
Flujos y archivos
 
Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)
 
Matrices pseint
Matrices   pseintMatrices   pseint
Matrices pseint
 
Eventos en Java
Eventos en JavaEventos en Java
Eventos en Java
 
Lenguaje C y los Sistemas Operativos Actuales
Lenguaje C y los Sistemas Operativos ActualesLenguaje C y los Sistemas Operativos Actuales
Lenguaje C y los Sistemas Operativos Actuales
 
Instrucciones de control alternativas
Instrucciones de control alternativasInstrucciones de control alternativas
Instrucciones de control alternativas
 

Destacado

Manejo de eventos en java
Manejo de eventos en javaManejo de eventos en java
Manejo de eventos en javaaleja09_40
 
Control de eventos en gui
Control de eventos en guiControl de eventos en gui
Control de eventos en guijc_lovecraft77
 
Software eventos y congresos web
Software eventos y congresos webSoftware eventos y congresos web
Software eventos y congresos webGesintur
 
Gestión de eventos en Joomla con JEvents
Gestión de eventos en Joomla con JEventsGestión de eventos en Joomla con JEvents
Gestión de eventos en Joomla con JEventsCarlos M. Cámara
 
Gestion Guiada Eventos Hacia Bi Operacional
Gestion Guiada Eventos Hacia Bi OperacionalGestion Guiada Eventos Hacia Bi Operacional
Gestion Guiada Eventos Hacia Bi OperacionalÓscar Alonso
 
Java _Capitulo_9
Java _Capitulo_9Java _Capitulo_9
Java _Capitulo_9Espol
 
Aplicaciones java
Aplicaciones javaAplicaciones java
Aplicaciones javaArnel Gomez
 
Java_Capitulo 10
Java_Capitulo 10Java_Capitulo 10
Java_Capitulo 10Espol
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo WebEmilio Aviles Avila
 
Trabajo sobre archivos en java.. programacion no numerica ii
Trabajo sobre archivos en java.. programacion no numerica iiTrabajo sobre archivos en java.. programacion no numerica ii
Trabajo sobre archivos en java.. programacion no numerica iirafaelrojas91
 
Sistemas de ficheros
Sistemas de ficherosSistemas de ficheros
Sistemas de ficherosdaniimc
 
Java_Capitulo_7
Java_Capitulo_7Java_Capitulo_7
Java_Capitulo_7Espol
 
Catalogos ufologicos
Catalogos ufologicosCatalogos ufologicos
Catalogos ufologicosjoefan73
 

Destacado (20)

Manejo de eventos en java
Manejo de eventos en javaManejo de eventos en java
Manejo de eventos en java
 
Control de eventos en gui
Control de eventos en guiControl de eventos en gui
Control de eventos en gui
 
Programación III (Java) - 07 Eventos
Programación III (Java) - 07 EventosProgramación III (Java) - 07 Eventos
Programación III (Java) - 07 Eventos
 
Gestion de eventos de moda
Gestion de eventos de modaGestion de eventos de moda
Gestion de eventos de moda
 
Software eventos y congresos web
Software eventos y congresos webSoftware eventos y congresos web
Software eventos y congresos web
 
Calpemocion
CalpemocionCalpemocion
Calpemocion
 
Gestión de eventos en Joomla con JEvents
Gestión de eventos en Joomla con JEventsGestión de eventos en Joomla con JEvents
Gestión de eventos en Joomla con JEvents
 
Gestion Guiada Eventos Hacia Bi Operacional
Gestion Guiada Eventos Hacia Bi OperacionalGestion Guiada Eventos Hacia Bi Operacional
Gestion Guiada Eventos Hacia Bi Operacional
 
Archivos Java
Archivos JavaArchivos Java
Archivos Java
 
Java _Capitulo_9
Java _Capitulo_9Java _Capitulo_9
Java _Capitulo_9
 
Archivos
ArchivosArchivos
Archivos
 
Aplicaciones java
Aplicaciones javaAplicaciones java
Aplicaciones java
 
Java_Capitulo 10
Java_Capitulo 10Java_Capitulo 10
Java_Capitulo 10
 
Implementación de Aplicaciones Basadas en Texto
Implementación de Aplicaciones Basadas en TextoImplementación de Aplicaciones Basadas en Texto
Implementación de Aplicaciones Basadas en Texto
 
Manejo Avanzado de Flujos de Entrada/Salida
Manejo Avanzado de Flujos de Entrada/SalidaManejo Avanzado de Flujos de Entrada/Salida
Manejo Avanzado de Flujos de Entrada/Salida
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
 
Trabajo sobre archivos en java.. programacion no numerica ii
Trabajo sobre archivos en java.. programacion no numerica iiTrabajo sobre archivos en java.. programacion no numerica ii
Trabajo sobre archivos en java.. programacion no numerica ii
 
Sistemas de ficheros
Sistemas de ficherosSistemas de ficheros
Sistemas de ficheros
 
Java_Capitulo_7
Java_Capitulo_7Java_Capitulo_7
Java_Capitulo_7
 
Catalogos ufologicos
Catalogos ufologicosCatalogos ufologicos
Catalogos ufologicos
 

Similar a Java Gestion Eventos (20)

Manejos de eventos john kevin castillo palacios
Manejos de eventos john kevin castillo palaciosManejos de eventos john kevin castillo palacios
Manejos de eventos john kevin castillo palacios
 
Eventos
EventosEventos
Eventos
 
Eventos
EventosEventos
Eventos
 
Adrian eventos
Adrian eventosAdrian eventos
Adrian eventos
 
Clase event
Clase eventClase event
Clase event
 
Equipo3
Equipo3Equipo3
Equipo3
 
Manejo de Eventos en java
Manejo de Eventos en javaManejo de Eventos en java
Manejo de Eventos en java
 
Tópicos avanzados de programación eventos
Tópicos  avanzados  de programación   eventosTópicos  avanzados  de programación   eventos
Tópicos avanzados de programación eventos
 
TAP - Eventos
TAP - EventosTAP - Eventos
TAP - Eventos
 
Menejo de eventos en java introduccion
Menejo de eventos en java introduccionMenejo de eventos en java introduccion
Menejo de eventos en java introduccion
 
Manejo Eventos en java
Manejo Eventos en javaManejo Eventos en java
Manejo Eventos en java
 
Manejo Eventos en java
Manejo Eventos en javaManejo Eventos en java
Manejo Eventos en java
 
Manejo de eventos
Manejo de eventosManejo de eventos
Manejo de eventos
 
Manejo Eventos
Manejo EventosManejo Eventos
Manejo Eventos
 
Eventos
EventosEventos
Eventos
 
Eventos tpa walter isc
Eventos tpa walter iscEventos tpa walter isc
Eventos tpa walter isc
 
Swing2
Swing2Swing2
Swing2
 
Manejoevento
ManejoeventoManejoevento
Manejoevento
 
Diapositivas luis farelo_tap_j3_isc4s
Diapositivas luis farelo_tap_j3_isc4sDiapositivas luis farelo_tap_j3_isc4s
Diapositivas luis farelo_tap_j3_isc4s
 
Java event
Java eventJava event
Java event
 

Más de Universidad Nacional de Frontera

Más de Universidad Nacional de Frontera (20)

Modelo renovacionlicenciamiento
Modelo renovacionlicenciamientoModelo renovacionlicenciamiento
Modelo renovacionlicenciamiento
 
Semana3 2 objetivos_justificacion_ejemplos
Semana3 2 objetivos_justificacion_ejemplosSemana3 2 objetivos_justificacion_ejemplos
Semana3 2 objetivos_justificacion_ejemplos
 
Modulo2 tema 3-lenguaje sql-ddl
Modulo2 tema 3-lenguaje sql-ddlModulo2 tema 3-lenguaje sql-ddl
Modulo2 tema 3-lenguaje sql-ddl
 
Socote2013 submission 120
Socote2013 submission 120Socote2013 submission 120
Socote2013 submission 120
 
Articulo modelo matematico_sistemamedicion
Articulo modelo matematico_sistemamedicionArticulo modelo matematico_sistemamedicion
Articulo modelo matematico_sistemamedicion
 
Articulo revista uss
Articulo revista ussArticulo revista uss
Articulo revista uss
 
Actividad lineas investigacion
Actividad lineas investigacionActividad lineas investigacion
Actividad lineas investigacion
 
Programacion kitlegontx java
Programacion kitlegontx javaProgramacion kitlegontx java
Programacion kitlegontx java
 
Trabajo Final - Ambiente de Aprendizaje FACHSE
Trabajo Final - Ambiente de Aprendizaje FACHSETrabajo Final - Ambiente de Aprendizaje FACHSE
Trabajo Final - Ambiente de Aprendizaje FACHSE
 
Ple proyecto
Ple proyectoPle proyecto
Ple proyecto
 
Realidad aumentada swl
Realidad aumentada swlRealidad aumentada swl
Realidad aumentada swl
 
Moodle2 0
Moodle2 0Moodle2 0
Moodle2 0
 
Sesion10 Interfaces Graficas Usuarios - java
Sesion10 Interfaces Graficas Usuarios - javaSesion10 Interfaces Graficas Usuarios - java
Sesion10 Interfaces Graficas Usuarios - java
 
Sesion12-componentes Visuales java
Sesion12-componentes Visuales javaSesion12-componentes Visuales java
Sesion12-componentes Visuales java
 
Sesion12-Componentes AWT
Sesion12-Componentes AWTSesion12-Componentes AWT
Sesion12-Componentes AWT
 
Software Libre en la Educación
Software Libre en la EducaciónSoftware Libre en la Educación
Software Libre en la Educación
 
Como Documentar Casos De Uso
Como Documentar Casos De UsoComo Documentar Casos De Uso
Como Documentar Casos De Uso
 
Modelo Requistos
Modelo RequistosModelo Requistos
Modelo Requistos
 
Utilizando Metodologia Rup Parte1
Utilizando Metodologia Rup Parte1Utilizando Metodologia Rup Parte1
Utilizando Metodologia Rup Parte1
 
Prueba de Confiabilidad del Software
Prueba de Confiabilidad del SoftwarePrueba de Confiabilidad del Software
Prueba de Confiabilidad del Software
 

Java Gestion Eventos

  • 1. GESTIÓN DE EVENTOS CURSO: TALLER DE CICLO PROGRAMACIÓN II III Elaborado por: Ing. Manuel Jesús Sánchez Chero SEMANAS Profesor del Curso Material Didáctico para uso exclusivo en clase
  • 2. Java :: Gestión de Eventos :: INTRODUCCIÓN La gestión de eventos, es el proceso de repuesta que se genera al hacer clic sobre un botón, los movimientos del ratón, etc. Ha llegado hacer un tema complejo en java desde la versión de java 1.1, la gestión de eventos ha cambiado significativamente. El modelo actual se llama gestión de eventos delegado, En este modelo, se deber registrar específicamente en java si se quiere gestionar un evento, como puede ser hacer clic sobre un botón, la idea es que se mejore la ejecución si sólo se informa de los eventos al código que necesita gestionarlo y no al resto. Los eventos se registran implementando una interfaz de listener de eventos, estos son los eventos de Listeners disponibles y los tipos de eventos que gestionan: Listener Descripción ActionListener Gestiona los eventos de acción, como hacer clic sobre los botones AdjustemenListener Gestiona los casos en los que un componente es escondido, movido, redimensionado o mostrado. ContainerListener Gestiona el caso en el que un componente coge o pierde el foco. ItemListener Gestiona el caso en el que cambia el estado de un elemento. KeyListener Recibe los eventos de teclado. MouseListener Recibe en los casos en que es pulsado el ratón, mete un componente, sale un componente o es presionado. MouseMotionListener Recibe en el caso en que se arrastra o mueve el ratón. TextListener Recibe los cambios de valor de texto. WindowListener Gestiona los casos en que una ventana ésta activada, desactivada, con o sin forma de ícono, abierta, cerrada o se sale de ella. Cada Listener es una interfaz y se debe implementar los métodos de la interfaz. A cada uno de estos métodos se le pasa un tipo de objeto que corresponde al tipo de evento. Ing. Manuel Jesús Sánchez Chero Página 2 de 26
  • 3. Java :: Gestión de Eventos :: Método Descripción ActionEvent Gestiona botones, el hacer clic en la lista o hacer clic en un elemento del menú. AdjustemenEvent Gestiona los movimientos de la barra de desplazamiento. ComponentEvent Gestiona el caso en el que un componente es escogido, movido, redimensionado o llega a ser visible. FocusEvent Gestiona el caso en el que un componente coge o pierde el foco. InputEvent Gestiona la marca de activación en una casilla de activación y el hacer clic de un elemento de la lista, hacer selecciones en los controles de opción y las selecciones de los elementos de menú. KeyEvent Gestiona la entrada del teclado. MouseEvent Gestiona los casos en que se arrastra el mouse, se mueve, se pulsa, se presiona, se suelta o entra o sale un componente. TextEvent Gestiona el valor de un cuadro de texto o se ha cambiado. WindowEvent Gestiona el caso en que una ventana ésta activada, desactivada, en forma de ícono, sin forma de ícono, abierta, cerrada o abandonada. En la siguiente tabla se recogen las interfaces para cada tipo de suceso. Suceso (Event) Interface (Listener) Método ActionEvent ActionListener actionPerformed AdjustementEvent AdjustementListener adjustementValueChanged FocusEvent FocusListener focusGained focusLost ItemEvent ItemListener itemStateChanged KeyEvent KeyListener keyTyped keyPressed keyReleased MouseEvent MouseListener mouseClicked mouseEntered mouseExited mousePressed mouseReleased MouseMotionListener mouseDragged mouseMoved Ing. Manuel Jesús Sánchez Chero Página 3 de 26
  • 4. Java :: Gestión de Eventos :: WindowEvent WindowListener windowActivated windowClosed windowClosing windowDeactivated windowDeiconified windowIconified windowOpened La fuente de los sucesos mantiene una lista de objetos interesados (listeners) en los mismos. Se añaden a la lista mediante una función denominada addXXXListener, donde XXX es el tipo de suceso. boton.addActionListener(accion); Se muestra los objetos fuente de sucesos y los tipos de objetos interesados en dichos sucesos (listeners) que se pueden añadir (add) Control Interfaces Button ActionListener Choice ItemListener. Checkbox ItemListener. Component FocusListener KeyListener MouseListener MouseMotionListener List ActionListener ItemListener Ing. Manuel Jesús Sánchez Chero Página 4 de 26
  • 5. Java :: Gestión de Eventos :: IMPLEMENTANDO LISTENER IMPLEMENTANDO LA INTERFAZ ACTIONLISTENER Empecemos implementando la interfaz ActionListener, que gestiona los eventos de acción, como hacer clic sobre los botones.  Utilizando un Applet, empecemos creando la clase CreandoApplet Nombre de la Clase CreandoApplet En la super clase escribir java.applet para que herede de la clase Applet Para implementar las interfaces se debe hacer clic en el botón Add. Mostrará una ventana para poder escoger las interfaces y luego hacer clic en el botón Ok. Ing. Manuel Jesús Sánchez Chero Página 5 de 26
  • 6. Java :: Gestión de Eventos :: Para terminar hacer clic en el botón Finish, se mostrará el código de la clase CreandoApplet, con sus respectivas librerías e interfaz implementada. Cómo puedes observar se ha creado el método ActionPerformed. Esto se debe a la implementación de la interfaz ActionListener. import java.applet.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Creandoapplet extends Applet implements ActionListener{ public void actionPerformed(ActionEvent arg0) { } } Como se ha implementado un applet hay que agregar de forma manual el método init() a la clase. import java.applet.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Creandoapplet extends Applet implements ActionListener{ public void init( ) { } public void actionPerformed(ActionEvent arg0) { } } Ing. Manuel Jesús Sánchez Chero Página 6 de 26
  • 7. Java :: Gestión de Eventos ::  Utilizando un Frame, Ahora crearemos la clase CreandoFrame e implementamos el ActionListener Nombre de la Clase, Creandoframe En la super clase escribir java.awt.Frame para que herede de la clase Frame. Para implementar las interfaces se debe hacer clic en el botón Add. En este caso se debe implementar el método main para ser la clase ejecutable. Mostrará una ventana para poder escoger las interfaces y luego hacer clic en el botón Ok. Ing. Manuel Jesús Sánchez Chero Página 7 de 26
  • 8. Java :: Gestión de Eventos :: Para terminar hacer clic en el botón Finish, se mostrará el código de la clase CreandoFrame, con sus respectivas librerías e interfaz implementada. Cómo puedes observar se ha creado el método ActionPerformed. Esto se debe a la implementación de la interfaz ActionListener. import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CreandoFrame extends Frame implements ActionListener { public void actionPerformed(ActionEvent arg0) { } public static void main(String[] args) { } } Se ha creado el método main. Aquí se pueden crear objetos. Ing. Manuel Jesús Sánchez Chero Página 8 de 26
  • 9. Java :: Gestión de Eventos :: IMPLEMENTANDO LA INTERFAZ ITEMLISTENER Continuamos implementando la interfaz ItemListener, que gestiona el caso en el que cambia el estado de un elemento. Nombre de la Clase. En la super clase escribir java.awt.Frame para que herede de la clase Frame. Para implementar las interfaces se debe hacer clic en el botón Add. En este caso se debe implementar el método main para ser la clase ejecutable. Mostrará una ventana para poder escoger las interfaces y luego hacer clic en el botón Ok. En este caso escogemos la interfaz ItemListener. Ing. Manuel Jesús Sánchez Chero Página 9 de 26
  • 10. Java :: Gestión de Eventos :: Para terminar hacer clic en el botón Finish, se mostrará el código de la clase ListaPosiciones, con sus respectivas librerías e interfaz implementada. Cómo puedes observar se ha creado el método itemStateChanged. Esto se debe a la implementación de la interfaz ItemListener. import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; public class ListaPosiciones extends Frame implements ItemListener { public void itemStateChanged(ItemEvent arg0) { } public static void main(String[] args) { } } Se ha creado el método main. Aquí se pueden crear objetos. Ing. Manuel Jesús Sánchez Chero Página 10 de 26
  • 11. Java :: Gestión de Eventos :: IMPLEMENTANDO LA INTERFAZ KEYLISTENER Ahora pasamos a implementar la interfaz KeyListener, que permite gestionar la entrada del teclado. Nombre de la Clase UtilizandoTeclas En la super clase escribir java.awt.Frame para que herede de la clase Frame. Para implementar las interfaces se debe hacer clic en el botón Add. En este caso se debe implementar el método main para ser la clase ejecutable. Mostrará una ventana para poder escoger las interfaces y luego hacer clic en el botón Ok. En este caso escogemos la interfaz KeyListener. Ing. Manuel Jesús Sánchez Chero Página 11 de 26
  • 12. Java :: Gestión de Eventos :: Para terminar hacer clic en el botón Finish, se mostrará el código de la clase UtilizandoTeclas, con sus respectivas librerías e interfaz implementada. Cómo puedes observar se ha creado los métodos keyPressed, keyReleased y keyTyped. Esto se debe a la implementación de la interfaz KeyListener. import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class UtilizandoTeclas extends Frame implements KeyListener { public void keyPressed(KeyEvent arg0) { } public void keyReleased(KeyEvent arg0) { } public void keyTyped(KeyEvent arg0) { } public static void main(String[] args) { } } Se ha creado el método main. Aquí se pueden crear objetos. Ing. Manuel Jesús Sánchez Chero Página 12 de 26
  • 13. Java :: Gestión de Eventos :: IMPLEMENTANDO LA INTERFAZ MOUSELISTENER Ahora nos toca revisar la implementación de la interfaz MouseListener, que se utiliza en los casos en que es pulsado el ratón, mete un componente, sale un componente o es presionado. Nombre de la Clase UtilizandoMouse En la super clase escribir java.awt.Frame para que herede de la clase Frame. Para implementar las interfaces se debe hacer clic en el botón Add. En este caso se debe implementar el método main para ser la clase ejecutable. Mostrará una ventana para poder escoger las interfaces y luego hacer clic en el botón Ok. En este caso escogemos la interfaz MouseListener. Ing. Manuel Jesús Sánchez Chero Página 13 de 26
  • 14. Java :: Gestión de Eventos :: Para terminar hacer clic en el botón Finish, se mostrará el código de la clase UtilizandoMouse, con sus respectivas librerías e interfaz implementada. Cómo puedes observar se ha creado los métodos mouseClicked, mouseEntered, mouseExited, mousePressed y mouseReleased. Esto se debe a la implementación de la interfaz MouseListener. Import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class UtilizandoMouse extends Frame implements MouseListener { public void mouseClicked(MouseEvent arg0) { } public void mouseEntered(MouseEvent arg0) { } public void mouseExited(MouseEvent arg0) { } public void mousePressed(MouseEvent arg0) { } public void mouseReleased(MouseEvent arg0) { } public static void main(String[] args) { } } Se ha creado el método main. Aquí se pueden crear objetos. Ing. Manuel Jesús Sánchez Chero Página 14 de 26
  • 15. Java :: Gestión de Eventos :: IMPLEMENTANDO LA INTERFAZ WINDOLISTENER Por último implementaremos la interfaz WindowListener, que se utiliza para gestionar los casos en que una ventana ésta activada, desactivada, con o sin forma de ícono, abierta, cerrada o se sale de ella. Nombre de la Clase TrabajandoConVentana En la super clase escribir java.awt.Frame para que herede de la clase Frame. Para implementar las interfaces se debe hacer clic en el botón Add. En este caso se debe implementar el método main para ser la clase ejecutable. Mostrará una ventana para poder escoger las interfaces y luego hacer clic en el botón Ok. En este caso escogemos la interfaz WindowListener. Ing. Manuel Jesús Sánchez Chero Página 15 de 26
  • 16. Java :: Gestión de Eventos :: Para terminar hacer clic en el botón Finish, se mostrará el código de la clase TrabajandoConVentanas, con sus respectivas librerías e interfaz implementada. Cómo puedes observar se ha creado los métodos winwdoActivated, windowClosed, windowClosing, windowDeactivated, windowDeiconifield y windowOpened. Esto se debe a la implementación de la interfaz MouseListener. import java.awt.*; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; public class TrabajandoConVentanas extends Frame implements WindowListener { public void windowActivated(WindowEvent arg0) { } public void windowClosed(WindowEvent arg0) { } public void windowClosing(WindowEvent arg0) { } public void windowDeactivated(WindowEvent arg0) { } public void windowDeiconified(WindowEvent arg0) { } public void windowIconified(WindowEvent arg0) { } Se ha creado el método main. public void windowOpened(WindowEvent arg0) { Aquí se pueden crear objetos. } public static void main(String[] args) { } } Ing. Manuel Jesús Sánchez Chero Página 16 de 26
  • 17. Java :: Gestión de Eventos :: EJEMPLOS Eventos de Botón Ahora mostramos un ejemplo en el que utilizamos dos botones, un botón para dibujar círculos en el applet al azar (empezando más debajo de la coordenada 60, 80), el otro botón es para limpiar el applet. import java.awt.*; import java.applet.*; import java.awt.event.*; public class AppletCirculos extends Applet implements ActionListener { Label l1; TextField t1; Button b1,b2; boolean dibuja = false; // se inicializa dibuja en falso para no dibujar public AppletCirculos() { l1 = new Label("Circulos"); t1 = new TextField(8); b1 = new Button("Dibuja"); b2 = new Button("Limpia"); add(l1); add(t1); add(b1); add(b2); b1. addActionListener(this); b2. addActionListener(this); } public void actionPerformed(ActionEvent ae) { if (ae.getSource() == b1) { dibuja = true; // si el usuario selecciona dibujar se pone verdadero } if (ae.getSource() == b2) { dibuja = false; // si el usuario selecciona limpiar se pone en falso } repaint(); } public void paint(Graphics g) { if (dibuja) { // si dibuja es verdadero se dibuja g.setColor(Color.red); // se cambia a rojo el color de dibujo int circulos = Integer.parseInt(t1.getText()); // se toma el numero del texto Ing. Manuel Jesús Sánchez Chero Página 17 de 26
  • 18. Java :: Gestión de Eventos :: for (int i = 1; i <= circulos ; i++) { // ciclo de circulos int x1 = (int) (Math.random()*100)+60; int y1 = (int) (Math.random()*100)+80; g.drawOval(x1,y1, 50, 50); // se dibuja un circulo en // una posición al azar } } else { // si dibuja es falso se limpia el applet g.setColor(Color.white); g.fillRect(0,0,200,200); } } } Algunos ejemplos de la vista del applet son: Ing. Manuel Jesús Sánchez Chero Página 18 de 26
  • 19. Java :: Gestión de Eventos :: 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: Ing. Manuel Jesús Sánchez Chero Página 19 de 26
  • 20. Java :: Gestión de Eventos :: Tomemos el tercer constructor, el cual es utilizado en este ejemplo, primero está 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 número de números a tener. Veamos el applet: import java.awt.*; import java.applet.*; import java.awt.event.*; 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: Ing. Manuel Jesús Sánchez Chero Página 20 de 26
  • 21. Java :: Gestión de Eventos :: Utilizamos el método getValue de la clase Scrollbar para tomar el valor de la barra deslizadora en base al movimiento que el usuario hizo en ella. 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.*; 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 cómo va cambiando el llenado del rectángulo, utilizando para ello el método fillRect de la clase Ing. Manuel Jesús Sánchez Chero Página 21 de 26
  • 22. Java :: Gestión de Eventos :: 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 método 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 Ing. Manuel Jesús Sánchez Chero Página 22 de 26
  • 23. Java :: Gestión de Eventos :: 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.*; public class MouseEvents extends Applet implements MouseListener, MouseMotionListener { String msg = ""; int mouseX = 0; int mouseY = 0; public void init() { 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 } // cuando se da un clic en el ratón 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; Ing. Manuel Jesús Sánchez Chero Página 23 de 26
  • 24. Java :: Gestión de Eventos :: 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: Ing. Manuel Jesús Sánchez Chero Página 24 de 26
  • 25. Java :: Gestión de Eventos :: Ing. Manuel Jesús Sánchez Chero Página 25 de 26
  • 26. Java :: Gestión de Eventos :: Ing. Manuel Jesús Sánchez Chero Página 26 de 26