jairogarcíarincón
06/09/2021
Contenidos
- UI, UX y Usabilidad
- Herramientas
- Eventos y componente JButton
- Componentes JFrame, JLabel y JDialog: Diálogos modales
- Componentes JTextField y JTextArea
- Calculadora guiada en Java Swing
- Componentes JMenuBar, JMenu y JMenuItem
- Componentes JCheckbox, JRadioButton y JComboBox
- Componentes: JEditorPane y JTextPane
- Práctica: Formulario de datos personales
- La clase Graphics
- Layout managers o gestores de composición
- Práctica: Formulario de registro
- Resolución: Formulario de registro
El modelo de eventos de Java
En Java, cada evento está representado por un objeto que es una subclase de la clase EventObject en el paquete java.util. Cada subclase de EventObject representa un tipo de evento particular. Por ejemplo:
- MouseEvent, para representar acciones del ratón: mover, arrastrar, hacer clic en un botón del ratón, etc.
- KeyEvent, para representar acciones del teclado, esto es, pulsar teclas.
- ActionEvent, para representar un acción del usuario en la interfaz, por ejemplo, pulsar un botón en la pantalla.
No obstante, en el modelo de eventos de Java, los EventObject no realizan acciones por si mismos, sino que esos eventos son enviados a otro objeto encargado de responder a un tipo de evento en particular. Estos objetos son los que conocemos como listeners o "escuchadores", y existen diferentes listeners que "escuchan" a los diferentes eventos, tales como los mouse listeners, key listeners o action listeners.
Los listener no se implementan como clases en java, sino como interfaces. Un interface sería entonces una colección de métodos que definen un comportamiento en particular. De este modo, cualquier clase que suministre información para dichos métodos puede declarar que implementa a dicho interface.
La gran ventaja de implementar interfaces frente a heredar de otras clases es que una misma clase puede implementar varios interfaces simultáneamente pero solo puede heredar de una.
Los listeners que usaremos estarán en el paquete java.awt.event (que debemos importar antes de implementarlos) y nos podemos encontrar los siguientes:
Nombre: ActionListener
Descripción: Se produce al hacer click en un componente, también si se pulsa Enter teniendo el foco en el componente.
Método:
public void actionPerformed(ActionEvent e)
Eventos:- JButton: click o pulsar Enter con el foco activado en él.
- JList: doble click en un elemento de la lista.
- JMenuItem: selecciona una opción del menú.
- JTextField: al pulsar Enter con el foco activado.
Nombre: KeyListener
Descripción: Se produce al pulsar una tecla. según el método cambiara la forma de pulsar la tecla.
Métodos:
public void keyTyped(KeyEvent e)
public void keyPressed(KeyEvent e)
public void keyReleased(KeyEvent e)
Eventos: Cuando pulsamos una tecla, según el listener:public void keyPressed(KeyEvent e)
public void keyReleased(KeyEvent e)
- keyTyped: al pulsar y soltar la tecla.
- keyPressed : al pulsar la tecla.
- keyReleased : al soltar la tecla.
Nombre: FocusListener
Descripción: Se produce cuando un componente gana o pierde el foco, es decir, que esta seleccionado.
Métodos: Recibir o perder el foco.
Nombre: MouseListener
Descripción: Se produce cuando realizamos una acción con el ratón.
Métodos:
public void mouseClicked(MouseEvent e)
public void mouseEntered(MouseEvent e)
public void mouseExited(MouseEvent e)
public void mousePressed(MouseEvent e)
public void mouseReleased(MouseEvent e)
Eventos: Según el listener:public void mouseEntered(MouseEvent e)
public void mouseExited(MouseEvent e)
public void mousePressed(MouseEvent e)
public void mouseReleased(MouseEvent e)
- mouseClicked: pinchar y soltar.
- mouseEntered: entrar en un componente con el puntero.
- mouseExited: salir de un componente con el puntero
- mousePressed: presionar el botón.
- mouseReleased: soltar el botón.
Nombre: MouseMotionListener
Descripción: Se produce con el movimiento del mouse.
Métodos:
public void mouseDragged(MouseEvent e)
public void mouseMoved(MouseEvent e)
Eventos: Según el listener:public void mouseMoved(MouseEvent e)
- mouseDragged: click y arrastrar un componente.
- mouseMoved: al mover el puntero sobre un elemento.
De esta forma, los listener se pueden invocar de esta manera:
o de esta otra:
JButton
El control JButton tiene como objetivo que el usuario pueda interactuar con él. La mecánica para atrapar el clic del objeto de la clase JButton se hace mediante la implementación de un ActionListener como acabamos de ver, más la declaración del método asociado a ese evento, en este caso actionPerformed.
Ejemplo 1: Confeccionar una ventana que muestre un botón. Cuando se presione finalizar la ejecución del programa Java.
Ejemplo 2: Confeccionar una ventana que contenga tres objetos de la clase JButton con las etiquetas "1", "2" y "3". Al presionarse cambiar el título del JFrame indicando qué botón se presionó.
Ejemplo 3: Confeccionar una ventana que contenga tres objetos de la clase JButton con las etiquetas "Pulsa o teclea 1", "Pulsa o teclea 2" y "Pulsa o teclea 3" y un display de tipo JLabel. Al presionarse cualquiera de los botones o pulsar en el teclado 1, 2 o 3 debe cambiar el texto del JLabel con los números correspondientes. Además, al pasar por encima de cada botón debe cambiar el color de fondo del mismo. Por último, un cuarto botón con el texto "limpiar display" (o pulsar la letra "c") debe vaciar el texto del JLabel display.
Fuentes: Eric S. Roberts. The Art & Science of Java
Fernando Ureña Gómez. discoduroderoer.es
Diego Moisset. tutorialesprogramacionya.com
Fernando Ureña Gómez. discoduroderoer.es
Diego Moisset. tutorialesprogramacionya.com
Publicado el 21 de Noviembre de 2024
interfacesusuariousabilidad