Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La Güeb de Joaquín
Programación JAVA
4.1 Introducción
Los eventos de acción, enfoque y elemento se capturan haciendo uso de los siguientes
interface s (o adaptadores) y eventos:
ActionEvent ActionListener
FocusEvent FocusListener FocusAdapter
ItemEvent ItemListener
Estos eventos tienen un nivel de abstracción superior a los de ratón y teclado; en estos tres
casos el evento se produce cuando ocurre una acción sobre un componente,
independientemente de la causa física que produce ese evento, por ejemplo, podemos pulsar
un botón haciendo uso del ratón, del teclado e, incluso, por programa.
Imagen 080401
1
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
Empleando los Listeners vistos hasta ahora, si quisiéramos, por ejemplo, ejecutar un método
asociado a la pulsación de un botón, tendríamos que añadir a ese botón dos instancias de
tratamiento de eventos: una de tipo MouseListener para capturar pulsaciones de ratón sobre el
botón y otra de tipo KeyListener para capturar pulsaciones de teclado. En este caso sería
mucho más cómodo utilizar el interfaz ActionListener que proporciona un método que se
activa con independencia de la causa física o lógica que "activa" el componente.
ActionListener
• ActionPerformed(ActionEvent e) Ocurre una accion sobre el elemento
FocusListener
• FocusGained(FocusEvent e) Nos posicionamos sobre el componente con el teclado
• fFcusLost {FocusEvent e) Salimos del elemento haciendo uso del teclado
ItemListener
• ItemStateChanged(ItemEvent e) Un elemento ha sido seleccionado o
deseleccionado por el usuario
ActionEvent
FocusEvent
• String / GetOppositeComponent() Indica el componente involucrado en el cambio
de foco. Si el tipo de evento es FOCUS_GAINED, se refiere al componente que ha
perdido el foco; si es FOCUS_LOST, al que ha ganado el foco
• int getID() Método perteneciente a la clase AWT/Event. Indica el tipo de evento
• Object getSource() Método perteneciente a la clase EventObject. Indica el objeto que
produjo el evento
ItemEvent
• int getStateChange() Tipo de cambio producido (SELECTED, DESELECTED)
• Object getItem() Objeto afectado por el evento (Por ejemplo una lista)
• ItemSelectable / GetItemSelectable() Elemento que ha originado el evento (por
ejemplo , un elemento de una lista)
2
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
En este apartado vamos a desarrollar dos ejemplos que muestran el uso del interfaz
ActionListener y el evento ActionEvent.
Clase InterrupcionDeAccion1
1 import java.awt.event.*;
2 import java.awt.*;
3
4 public class InterrupcionDeAccion1
implements ActionListener {
5
6 public void actionPerformed(ActionEvent Evento){
7 Component Componente =
(Component) Evento.getSource();
8 String AccionRealizada =
Evento.getActionCommand();
9
10 System.out.println(
"Componente: " + Componente.getName());
11 System.out.println("Suceso: " + AccionRealizada);
12 System.out.println();
13 }
14 }
Para probar nuestra implementación del interfaz ActionListener, creamos una clase
PruebaEventosAccionl (línea 3) que incorpora un GUI con un botón, un campo de texto y una
lista; a estos tres elementos se les asocian sendas instancias de la clase InterrupcionDeAccionl
(líneas 20 a 22); el resultado de una posible ejecución se muestra tras el código de la clase.
3
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
Clase PruebaEventosAccion1
1 import java.awt.*;
2
3 public class PruebaEventosAccion1 {
4
5 public static void main(String[] args) {
6
7 Frame MiFrame = new Frame("Prueba eventos de acción");
8 Panel MiPanel = new Panel(new GridLayout(3,1));
9
10 Button Boton = new Button("Etiqueta del boton");
11 TextField CampoDeTexto = new TextField("Texto del campo",8);
12 List Lista = new List(3);
13 Lista.add("Opcion 1 de la lista");
Lista.add("Opcion 2 de la lista");
14 Lista.add("Opcion 3 de la lista");
Lista.add("Opcion 4 de la lista");
15
16 MiPanel.add(Boton);
17 MiPanel.add(CampoDeTexto);
18 MiPanel.add(Lista);
19
20 Boton.addActionListener(new InterrupcionDeAccion1());
21 CampoDeTexto.addActionListener(new InterrupcionDeAccion1());
22 Lista.addActionListener(new InterrupcionDeAccion1());
23
24 MiFrame.add(MiPanel);
25 MiFrame.setSize(400,200);
26 MiFrame.show();
27
28 }
29 }
Imagen 080402
Imagen 080403
En el segundo ejemplo de eventos de acción se crea un GUI con tres botones: "rojo", "verde"
y "azul"; al pulsar en cada uno de ellos, el color del fondo varía al color seleccionado. La
4
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
clase PruebaEventosAccion2 proporciona el interfaz gráfico de usuario con los tres botones
(líneas 10 a 12) y les añade instancias de un objeto de tratamiento de eventos de acción:
InterrupcionDeAccion2 (líneas 18 a 20); a través del constructor de esta clase se pasa la
referencia del panel que registrará los cambios de color a medida que se produzcan los
eventos.
Clase PruebaEventosAccion2
1 import java.awt.*;
2
3 public class PruebaEventosAccion2 {
4
5 public static void main(String[] args) {
6
7 Frame MiFrame = new Frame("Prueba eventos de acción");
8 Panel MiPanel = new Panel();
9
10 Button Rojo = new Button("Rojo");
11 Button Verde = new Button("Verde");
12 Button Azul = new Button("Azul");
13
14 MiPanel.add(Rojo);
15 MiPanel.add(Verde);
16 MiPanel.add(Azul);
17
18 Rojo.addActionListener(new InterrupcionDeAccion2(MiPanel));
19 Verde.addActionListener(new InterrupcionDeAccion2(MiPanel));
20 Azul.addActionListener(new InterrupcionDeAccion2(MiPanel));
21
22 MiFrame.add(MiPanel);
23 MiFrame.setSize(400,200);
24 MiFrame.show();
25
26 }
27 }
Clase InterrupcionDeAccion2
1 import java.awt.event.*;
2 import java.awt.*;
3
4 public class InterrupcionDeAccion2 implements ActionListener {
5
6 Panel PanelPrincipal;
7
8 InterrupcionDeAccion2 (Panel PanelPrincipal) {
9 this.PanelPrincipal = PanelPrincipal;
10 }
11
5
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
Imagen 080404
En este apartado vamos a desarrollar dos ejemplos que muestran el uso del interfaz
FocusListener, el adaptador F ocusAdapter y el evento F ocusEvent.
Clase PruebaEventosEnfoque1
1 import java.awt.*;
2
3 public class PruebaEventosEnfoque1 {
4
5 public static void main(String[] args) {
6
7 Frame MiFrame = new Frame("Prueba eventos de enfoque");
8 Panel MiPanel = new Panel();
9 Button Boton1 = new Button("Componente 1");
10 Button Boton2 = new Button("Componente 2");
11 MiPanel.add(Boton1);
12 MiPanel.add(Boton2);
6
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
13 MiFrame.add(MiPanel);
14 MiFrame.setSize(300,200);
15 MiFrame.show();
16
17 Boton2.addFocusListener(new InterrupcionDeEnfoque1());
18
19 }
20 }
Clase InterrupcionDeEnfoque1
1 import java.awt.event.*;
2
3 public class InterrupcionDeEnfoque1 implements FocusListener {
4
5 public void focusGained(FocusEvent Evento){
6 System.out.println("Se ha entrado en el componente");
7 }
8
9 public void focusLost(FocusEvent Evento){
10 System.out.println("Se ha salido del componente");
11 }
12
13 }
Imagen 080405
Imagen 080406
El segundo ejemplo de este apartado muestra la manera de obtener información acerca del
objeto origen cuando nos llega un evento que indica que se ha "ganado" enfoque. De igual
manera, podríamos haber realizado la implementación con el evento de pérdida de enfoque.
Clase PruebaEventosEnfoque2
1 import java.awt.*;
2
3 public class PruebaEventosEnfoque2 {
4
5 public static void main(String[] args) {
6
7 final int NUM_FILAS = 5;
8 Button[] Boton = new Button[NUM_FILAS];
9 TextField[] Campo = new TextField[NUM_FILAS];
10
11 Frame MiFrame = new Frame("Prueba eventos de enfoque");
12 Panel MiPanel = new Panel(new GridLayout(NUM_FILAS,2));
13
14 for (int i=0;i<NUM_FILAS;i++) {
15 Boton[i] = new Button("Boton "+i);
16 Campo[i] = new TextField(15);
17 MiPanel.add(Boton[i]);
18 MiPanel.add(Campo[i]);
19 Boton[i].addFocusListener(new InterrupcionDeEnfoque2());
20 Campo[i].addFocusListener(new InterrupcionDeEnfoque2());
21 }
22
23 MiFrame.add(MiPanel);
24 MiFrame.setSize(400,200);
25 MiFrame.show();
26
27 }
28 }
Clase InterrupcionDeEnfoque2
1 import java.awt.event.*;
2 import java.awt.*;
3
4 public class InterrupcionDeEnfoque2 extends FocusAdapter {
5
6 public void focusGained(FocusEvent Evento){
7 Component Componente = (Component) Evento.getSource();
8 System.out.println(
"Se ha entrado en " +
Componente.getName() +
"\nsaliendo de " +
Evento.getOppositeComponent() + "\n");
9
10 }
11 }
8
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
Imagen 080407
Imagen 080408
En este apartado vamos a desarrollar dos ejemplos que muestran el uso del interfaz
ItemListener y el evento ItemEvent. En el primer ejemplo utilizamos la clase
PruebaEventosElementol que crea cuatro cajas de texto (líneas 10 a 13) y les añade la
funcionalidad implementada en la clase InterrupcionDeElementol (líneas 20 a 23).
Clase PruebaEventosElemento1
1 import java.awt.*;
2
3 public class PruebaEventosElemento1 {
4
5 public static void main(String[] args) {
6
7 Frame MiFrame = new Frame("Prueba eventos de elemento");
8 Panel MiPanel = new Panel(new GridLayout(4,1));
9
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
9
10 Checkbox Diesel =
new Checkbox("Diesel", true);
11 Checkbox FarosXenon =
new Checkbox("Faros de Xenon", false);
12 Checkbox LlantasAleacion =
new Checkbox("Llantas de aleacion", false);
13 Checkbox PinturaMetalizada =
new Checkbox("Pintura Metalizada", true);
14
15 MiPanel.add(Diesel);
16 MiPanel.add(FarosXenon);
17 MiPanel.add(LlantasAleacion);
18 MiPanel.add(PinturaMetalizada);
19
20 Diesel.addItemListener(new InterrupcionDeElemento1());
21 FarosXenon.addItemListener(new InterrupcionDeElemento1());
22 LlantasAleacion.addItemListener(new InterrupcionDeElemento1());
23 PinturaMetalizada.addItemListener(
new InterrupcionDeElemento1());
24
25 MiFrame.add(MiPanel);
26 MiFrame.setSize(400,200);
27 MiFrame.show();
28
29 }
30 }
Clase InterrupcionDeElemento1
1 import java.awt.event.*;
2 import java.awt.*;
3
4 public class InterrupcionDeElemento1 implements ItemListener {
5
6 public void itemStateChanged(ItemEvent Evento){
7
8 Checkbox Componente = (Checkbox) Evento.getSource();
9 boolean Estado = Componente.getState();
10 int NuevoEstado = Evento.getStateChange();
11
12 System.out.println("Componente: " + Evento.getItem());
13 System.out.println("Estado actual: " + Estado);
14 if (NuevoEstado==ItemEvent.SELECTED)
15 System.out.println("Seleccionado");
16 else
17 System.out.println(" No seleccionado");
18 System.out.println();
19 }
10
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
20
21 }
Imagen 080409
Imagen 080410
Clase PruebaEventosElemento2
1 import java.awt.*;
2
3 public class PruebaEventosElemento2 {
4
5 public static void main(String[] args) {
6
7 Frame MiFrame = new Frame("Prueba eventos de elemento");
8 Panel PanelPrincipal = new Panel(new FlowLayout(FlowLayout.LEFT));
9 Panel PanelIzq = new Panel(new GridLayout(6,1));
10
11 Component[] Componentes = new Component[8];
12
11
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
12
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
65 }
66 }
Si el elemento que ha generado el evento está definido como "Llantas de aleación", la lista
Llantas (Componentes[5]) se habilita en caso de que la caja de verificación esté seleccionada
(SELECTED) o se deshabilita en caso de que la caja de verificación no esté seleccionada
(líneas 16 a 20). La misma lógica se aplica con la caja de verificación "Pintura metalizada", a
través de la cual se controla si la lista desplegable ColoresMetalizados (Componentes[6]) se
hace visible o no (líneas 22 a 26).
La etiqueta Seleccionado muestra en cada instante un texto relativo al elemento que ha sido
seleccionado más recientemente (líneas 38 y 39).
Clase InterrupcionDeElemento2
1 import java.awt.event.*;
2 import java.awt.*;
3
4 public class InterrupcionDeElemento2 implements ItemListener {
5
6 Component[] Componentes = new Component[8];
7
8 InterrupcionDeElemento2(Component[] Componentes) {
9 this.Componentes = Componentes;
10 }
11
12 public void itemStateChanged(ItemEvent Evento){
13
14 int Estado = Evento.getStateChange();
15
16 if (Evento.getItem().equals("Llantas de aleación"))
17 if (Estado==ItemEvent.SELECTED)
18 Componentes[5].setEnabled(true);
19 else
20 Componentes[5].setEnabled(false);
21
22 if (Evento.getItem().equals("Pintura metalizada"))
23 if (Estado==ItemEvent.SELECTED)
24 Componentes[6].setVisible(true);
25 else
26 Componentes[6].setVisible(false);
27
13
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
28 if (Evento.getItem().equals("Asientos deportivos"))
29 if (Estado==ItemEvent.SELECTED) {
30 Checkbox Asientos = (Checkbox) Componentes[2];
31 Asientos.setState(true);
32 Componentes[2].setEnabled(false);
33 }
34 else {
35 Checkbox Asientos = (Checkbox) Componentes[2];
36 Componentes[2].setEnabled(true);
37 }
38
39 Label Seleccionado = (Label) Componentes[7];
40 Seleccionado.setText(""+Evento.getItem());
41 }
42 }
43
Imagen 080411
Referencia Bibliográfica
Java a través de ejemplos
Jesús Bobadilla Sancho / Adela Sancho Hernández
RA-MA
ISBN.: 84-7897-549-7
14
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
4 eventos de acción, enfoque y elemento
15