You are on page 1of 10

Tutorial

:
Registrar la
movimiento
del mouse y
las teclas
direccionales
en una tabla
(JTable)
Norman Salvador Aráuz López
-

Nota: El presente tutorial asume que usted ya sabe cómo crear. a una aplicación desde cero. formularios etc. La idea es que cuando el usuario seleccione una fila o navegue por la tabla con las teclas direccionales se obtengan los datos de la fila actualmente seleccionadas. Esto lo haremos haciendo uso de eventos. a la cual le agregaremos unos campos y debe quedar como aparecen en la siguiente figura: Campos agregados a la factura para este ejemplo . agregar controles. Registrar el evento con el Mouse: (mouseClicked) 2. Registrar la selección de las teclas direccionales dentro de la tabla (KeyPressed) Para el siguiente tutorial haremos uso de la factura realizada en el tutorial número 4. y practicar continuamente para dominio de la sintaxis.Factura) Si usted no maneja estas temáticas se recomienda primero realizar los tutoriales anteriores. En este tutorial aprenderá: 1. Además está basado en el uso de tablas en Java (Tutorial 4 JTable .

para agregarlo seleccionamos la tabla (que es el control donde deseamos registrar el evento) click derecho->Events>Mouse->mouseClicked . cuando ya tenemos el formulario como aparece en la imagen anterior el siguiente paso será generar los eventos para registrar lo que seleccione el mouse y otro para registrar lo que seleccionen las teclas direccionales. Para ello a continuación se detalla cada uno de los procedimientos: 1.La lista de campos agregados y sus nombres es la siguiente: Control JTextField JTextField JTextField JTextField JLabel JLabel JLabel JLabel Nombre txtIdSelected txtDescripcionSelected txtCantidadSelected txtPrecioUnitarioSelected No es necesario No es necesario No es necesario No es necesario Listo. Registrar el evento con el Mouse: (mouseClicked) Este evento registra el control que el mouse selecciona en el momento que está corriendo la aplicación.

la siguiente figura muestra uno a uno como capturar cada valor dentro de la tabla: .Esta acción generará un método asociado a un evento. lo que aparecerá luego de esto es igual a lo que se presenta en la figura siguiente: Luego agregaremos el siguiente bloque de código: Estos campos servirán para capturar uno a uno los campos de la fila seleccionada y en dependencia del tipo de dato los iremos almacenando.

Primero el valor entero: Podrá notar que para obtener un valor de la tabla se utiliza el nombre del modelo interno y la función getValueAt(fila.getSelectedRow()) y el número de columna donde se encuentra el dato.toString. de la siguiente manera: Listo. con las funcionalidades de nuestro botón agregar el cual ya fue probado en el tutorial correspondiente. Y luego seleccionar de la tabla alguna fila de las que hemos agregado: . Así Id será en columna cero. ahora en cuanto corramos nuestro formulario deberemos agregar al menos dos productos. en el caso del id es cero. Descripción en columna 1 y así sucesivamente. Luego el campo seleccionado se convierte a string usando el método . donde le pasamos como número de fila la fila seleccionada desde el formulario en la vista de diseño (TablaExterna. columna). porque recordemos que los números de columna empiezan de cero. el siguiente bloque muestra como capturar cada campo de la fila seleccionada: Lo siguiente será tomar estos datos capturados de la tabla y pasarlos a los controles que hemos agregado.

Seleccionamos dentro de la tabla cualquier fila y observamos que los datos de la fila seleccionados aparecen en los cuadros de texto que hemos agregado .

damos click derecho->Events->Key->KeyPresed.event. Registrar la selección de las teclas direccionales dentro de la tabla (KeyPressed) Muy bien. seleccionamos nuestra tabla.awt.KeyEvent evt) el cual recibe como argumento un evento que registra el evento cuando las teclas son presionadas. en este ejemplo veremos cómo registrar eventos de las teclas direccionales: Siempre con nuestro formulario de factura.2. para ello se hará uso de un evento denominado KeyPressed(java. asignando un código a cada tecla en dependencia de su funcionalidad. el cual nos dará como resultado un método para manejar el movimiento de las teclas: . como ya hemos visto es posible ver lo que el usuario selecciona de la tabla. ahora el siguiente paso muestra lo que el usuario selecciona con las teclas direccionales.

Luego agregamos las mismas variables que fueron creadas en el paso anterior: .

para registrar el evento de la tecla inferior se agrega lo siguiente: VK_UP es el código correspondiente a la tecla flecha inferior de las teclas direccionales. luego de la sentencia . por lo cual se debe compensar este retraso. Cada tecla posee un código único el cual se puede pasar a formato carácter. por lo cual se le específica a la variable evento. por lo cual deberemos utilizar el método keyCode() del evento que nos aparece en el parámetro que recibe nuestro método: La sentencia anterior. la función compara ese código con el código correspondiente a la tecla de abajo. Si no lo agrega. ahora agregamos la sentencia if que nos dirá si la tecla direccional ha cambiado de posición. Si esto es cierto se habrá detectado el movimiento de la tecla direccional inferior. si selecciona la 1 le mostrará la 2 y viceversa. es decir.Listo.getSelectedRow() se le agrega + 1. cuando el evento se dispara este código es activado. esto es debido a que el evento registra la acción una vez que el foco (selección) cambia de valor. Las instrucciones que se deben agregar luego de esta de declaración son las siguientes: Observe que. evaluará si es presionada la tecla direccional inferior (VK_DOWN). el evento se registrará hasta que usted cambie de fila seleccionada en la tabla. Ahora. . por cada campo.

siempre dentro del método TablaExternaKeyPresed() el cual estamos digitando actualmente. ahora si probamos nuestro formulario veremos que ahora también es posible desplazarse en la tabla con las flechas direccionales.Observe que ahora en lugar de sumar un número a la fila seleccionada se le resta. se selecciona la anterior. es decir la de arriba (VK_UP). Luego de estas declaraciones asignamos los valores capturados a los textbox correspondientes. Listo. esto es porque se está realizando el proceso contrario es decir. y en cuanto desplacemos los valores de la fila seleccionada aparecerán en los controles designados para esa tarea: . esto lo agregaremos después del bloque else.