Eventos de Usuario: ActionListener

Un evento de usuario es una acción generada por el mismo usuario. Ejemplo de eventos son:
  • Pulsar un boton
  • Pulsar alguna tecla
  • Mantener pulsada una tecla
  • Soltar la tecla
  • Hacer un click
  • etc
Al realizar un evento lo más comun es que querramos que nuestro programa respondar, asi al pulsar un boton de "cerrar" esperamos que se cierre la aplicación y será prescisamente porque el boton tendrá un vigilante que escucha si se pulsa el boton o no, y nos avisa inmediatamente para que ejecutemos el método "cerrar".
Los detectores de eventos(vigilantes) se llaman Listeners y son en realidad diferentes tipos de interfaces, esos contratos para implementar a nuestras clases con la palabra reservada "implements".
Hay de muchos tipos:
  • ActionListener
    • Eventos de acción generados por el usuario.
  • AdjustmentListener
    • Generado cuando un componente es ajustado.
  • ComponentListener
    • Generado cuando un componente se hace visible.
  • FocusListener
    • Generado cuando un componente gana o pierde el "focus"
  • ItemListener
    • Generado cuando hay cambios en items de caja o listas.
  • KeyListener
    • Generado al pulsar una tecla.
  • MouseListener
    • Pulsación o entrada de ratón.
  • MouseMotionListener
    • Movimiento del ratón sobre un componente.
  • TextListener
    • Reaacciona cuando se escribe
  • WindowListener
    • Cambios en ventanas.
*Para nombrar solos unos pocos (ver las sub-interfaces de EventListener aqui).
*Cada interfaz define uno o más métodos que deben ser implementadas obligatoriamente por nuestra clase para que el caso sea implementada.
*Podemos implementar tantas interfaces como nos sea necesario:

public
class MiClase implements ActionListener, TextListener, WindowListener{
}


Pasos para implementar Listeners

  1. Implementar la interfaz a la declaración de la clase.
  2. Añadir el vigilante al componente.
  3. Implementar todos los métodos de la interfaz
  4. Escribir el comportamiento del método

El código:
  1. package vigilante;
  2. import java.awt.event.*;
  3. import java.awt.*;
  4. import javax.swing.*;
  5. public class Simple implements ActionListener{
  6.     static JFrame marco;
  7.     FlowLayout flujo;
  8.     JButton hola, salir;
  9.     public Simple(){
  10.         marco = new JFrame();
  11.         flujo = new FlowLayout();
  12.         marco.setLayout(flujo);
  13.         marco.setTitle("EjempoListener");
  14.         marco.setSize(243,74);
  15.         marco.setLocationRelativeTo(null);
  16.         marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  17.        
  18.         hola = new JButton("Hola");
  19.         marco.add(hola);
  20.         salir = new JButton("Salir");
  21.         marco.add(salir);
  22.         hola.addActionListener(this);
  23.         salir.addActionListener(this);
  24.     }
  25.     public static void main(String[] args) {
  26.         new Simple();
  27.         marco.setVisible(true);
  28.     }
  29.     @Override
  30.     public void actionPerformed(ActionEvent e) {
  31.         if(e.getSource() == hola){
  32.               JOptionPane.showConfirmDialog(null, "Un Placer Conocerte!", "Visita Dar10comyr.blogspot.com.ar", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);
  33.         }
  34.         if(e.getSource() == salir){
  35.             System.exit(0);
  36.         }
  37.     }
  38. }

Escuchante Acción!

java.awt.event

Interface ActionListener



Único Método:

  • void actionPerformed(ActionEvent e)
    • Se invoca cuando se produce una acción.

Único Ejemplo:


  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. public class EventosAccion extends JFrame implements ActionListener {
  5.     JPanel panel1 = new JPanel();
  6.     JLabel eti1 = new JLabel("Escribe tu titulo: ", JLabel.RIGHT);
  7.     JTextField campo = new JTextField(15);
  8.     JButton cambiaTitulo = new JButton("Cambia!");
  9.     JPanel panel2 = new JPanel();
  10.     JButton minimiza = new JButton("Minimizar");
  11.     JButton minimizar = new JButton("Minimizar Tamaño");
  12.     JButton maximiza = new JButton("Maximizar");
  13.     JButton cerrar = new JButton("Cerrar");
  14.     JPanel panel3 = new JPanel();
  15.     JLabel eti2 = new JLabel("Selecciona el color de fondo: ");
  16.     String arreglo[] = {null,"rojo", "azul", "verde", "amarillo"};
  17.     JComboBox fondo = new JComboBox(arreglo);
  18.     JPanel panel4 = new JPanel();
  19.     GridLayout grilla = new GridLayout(4,1);
  20.    
  21.     JButton mensaje = new JButton("Mensaje");
  22.    
  23.     public EventosAccion(){
  24.         super("Titulo de la ventana");
  25.         setSize(432,111);        
  26.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  27.         setResizable(false);
  28.         setLocationRelativeTo(null);
  29.        
  30.         panel1.setLayout(new FlowLayout());
  31.         panel1.add(eti1);panel1.add(campo);panel1.add(cambiaTitulo);
  32.        
  33.         panel2.setLayout(new FlowLayout());
  34.         panel2.add(minimiza);
  35.         minimizar.setEnabled(false);panel2.add(minimizar);
  36.         panel2.add(maximiza);panel2.add(cerrar);
  37.        
  38.         panel3.setLayout(new FlowLayout());
  39.         panel3.add(eti2);panel3.add(fondo);
  40.        
  41.         panel4.setLayout(new FlowLayout());
  42.         panel4.add(mensaje);
  43.        
  44.         setLayout(grilla);
  45.         add(panel1);add(panel2);add(panel3);add(panel4);
  46.         pack();
  47.         cambiaTitulo.addActionListener(this);
  48.         minimiza.addActionListener(this);
  49.         minimizar.addActionListener(this);
  50.         maximiza.addActionListener(this);
  51.         cerrar.addActionListener(this);
  52.         fondo.addActionListener(this);
  53.         mensaje.addActionListener(this);
  54.     }
  55.     public static void main(String[] args) {
  56.         EventosAccion app = new EventosAccion();
  57.         app.setVisible(true);
  58.     }  
  59.     @Override
  60.     public void actionPerformed(ActionEvent e) {
  61.          if(e.getSource()== cambiaTitulo){
  62.             setTitle(campo.getText());
  63.         }
  64.         if(e.getSource()== minimiza){
  65.             setExtendedState(JFrame.ICONIFIED);
  66.         }
  67.         if(e.getSource()== minimizar){
  68.             minimizar.setEnabled(false);
  69.             setSize(432,111);
  70.             setLocationRelativeTo(null);
  71.             pack();
  72.             maximiza.setEnabled(true);
  73.         }
  74.         if(e.getSource()== maximiza){
  75.             maximiza.setEnabled(false);
  76.             setExtendedState(JFrame.MAXIMIZED_BOTH);
  77.             minimizar.setEnabled(true);
  78.         }
  79.         if(e.getSource()== cerrar){
  80.             System.exit(0);
  81.         }
  82.         if(e.getSource()== fondo){
  83.             if(fondo.getSelectedItem() == "rojo"){
  84.                 panel1.setBackground(Color.red);
  85.                 panel2.setBackground(Color.red);
  86.                 panel3.setBackground(Color.red);
  87.                 panel4.setBackground(Color.red);
  88.             }
  89.             if(fondo.getSelectedItem() == "azul"){
  90.                 panel1.setBackground(Color.BLUE);
  91.                 panel2.setBackground(Color.BLUE);
  92.                 panel3.setBackground(Color.BLUE);
  93.                 panel4.setBackground(Color.BLUE);
  94.             }
  95.             if(fondo.getSelectedItem() == "verde"){
  96.                 panel1.setBackground(Color.GREEN);
  97.                 panel2.setBackground(Color.GREEN);
  98.                 panel3.setBackground(Color.GREEN);
  99.                 panel4.setBackground(Color.GREEN);
  100.             }
  101.             if(fondo.getSelectedItem() == "amarillo"){
  102.                 panel1.setBackground(Color.YELLOW);
  103.                 panel2.setBackground(Color.YELLOW);
  104.                 panel3.setBackground(Color.YELLOW);
  105.                 panel4.setBackground(Color.YELLOW);
  106.             }
  107.                
  108.         }
  109.         if(e.getSource()== mensaje){
  110.             JOptionPane.showMessageDialog(mensaje, "iba a poner algo interesante"
  111.             "pero se me olvido! xD");
  112.         }
  113.     }
  114. }

Me quedo algo asi, donde puedo estar en el campo de texto el título de la ventana ocultar, minimizar, maximizar o cerrar la ventana, cambiar el color de fondo y generar un mensaje pop-up.

No hay comentarios:

Publicar un comentario