Sunteți pe pagina 1din 10

Tutorial:

Registrar la
movimiento
del mouse y
las teclas
direccionales
en una tabla
(JTable)
Norman Salvador Aruz Lpez
-

Nota: El presente tutorial asume que usted ya sabe cmo crear, agregar
controles, formularios etc. a una aplicacin desde cero. Adems est
basado en el uso de tablas en Java (Tutorial 4 JTable - Factura) Si
usted no maneja estas temticas se recomienda primero realizar
los tutoriales anteriores, y practicar continuamente para dominio
de la sintaxis.
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.
En este tutorial aprender:
1. Registrar el evento con el Mouse: (mouseClicked)
2. Registrar la seleccin de las teclas direccionales dentro de la
tabla (KeyPressed)
Para el siguiente tutorial haremos uso de la factura realizada en el
tutorial nmero 4, a la cual le agregaremos unos campos y debe
quedar como aparecen en la siguiente figura:

Campos
agregados a la
factura
para
este ejemplo

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, 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 continuacin se detalla cada uno de los procedimientos:
1. Registrar el evento con el Mouse: (mouseClicked)
Este evento registra el control que el mouse selecciona en el momento que
est corriendo la aplicacin, para agregarlo seleccionamos la tabla (que es
el control donde deseamos registrar el evento) click derecho->Events>Mouse->mouseClicked

Esta accin generar un mtodo 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 cdigo:

Estos campos servirn para capturar uno a uno los campos de la fila
seleccionada y en dependencia del tipo de dato los iremos almacenando, la
siguiente figura muestra uno a uno como capturar cada valor dentro de la
tabla:

Primero el valor entero:

Podr notar que para obtener un valor de la tabla se utiliza el nombre del
modelo interno y la funcin getValueAt(fila, columna), donde le pasamos
como nmero de fila la fila seleccionada desde el formulario en la vista de
diseo (TablaExterna.getSelectedRow()) y el nmero de columna donde se
encuentra el dato, en el caso del id es cero, porque recordemos que los
nmeros de columna empiezan de cero. As Id ser en columna cero,
Descripcin en columna 1 y as sucesivamente, Luego el campo
seleccionado se convierte a string usando el mtodo .toString, 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, de la siguiente manera:

Listo, ahora en cuanto corramos nuestro formulario deberemos agregar al


menos dos productos, con las funcionalidades de nuestro botn agregar el
cual ya fue probado en el tutorial correspondiente. Y luego seleccionar de la
tabla alguna fila de las 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

2. Registrar la seleccin de las teclas direccionales dentro de la


tabla (KeyPressed)
Muy bien, 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, para ello se har uso de un evento denominado
KeyPressed(java.awt.event.KeyEvent evt) el cual recibe como
argumento un evento que registra el evento cuando las teclas son
presionadas, asignando un cdigo a cada tecla en dependencia de su
funcionalidad, en este ejemplo veremos cmo registrar eventos de las teclas
direccionales:

Siempre con nuestro formulario de factura, seleccionamos nuestra tabla,


damos click derecho->Events->Key->KeyPresed, el cual nos dar como
resultado un mtodo para manejar el movimiento de las teclas:

Luego agregamos las mismas variables que fueron creadas en el paso


anterior:

Listo, ahora agregamos la sentencia if que nos dir si la tecla direccional ha


cambiado de posicin, por lo cual deberemos utilizar el mtodo keyCode()
del evento que nos aparece en el parmetro que recibe nuestro mtodo:

La sentencia anterior, evaluar si es presionada la tecla direccional inferior


(VK_DOWN), por lo cual se le especfica a la variable evento. Cada tecla
posee un cdigo nico el cual se puede pasar a formato carcter, la funcin
compara ese cdigo con el cdigo correspondiente a la tecla de abajo. Si
esto es cierto se habr detectado el movimiento de la tecla direccional
inferior. Las instrucciones que se deben agregar luego de esta de

declaracin son las siguientes:


Observe que, por cada campo, luego de la sentencia .getSelectedRow()
se le agrega + 1, esto es debido a que el evento registra la accin una vez
que el foco (seleccin) cambia de valor, por lo cual se debe compensar este
retraso. Si no lo agrega, el evento se registrar hasta que usted cambie de
fila seleccionada en la tabla, es decir, si selecciona la 1 le mostrar la 2 y
viceversa.
Ahora, para registrar el evento de la tecla inferior se agrega lo siguiente:

VK_UP es el cdigo correspondiente a la tecla flecha inferior de las teclas


direccionales, cuando el evento se dispara este cdigo es activado.

Observe que ahora en lugar de sumar un nmero a la fila seleccionada se le


resta, esto es porque se est realizando el proceso contrario es decir, se
selecciona la anterior, es decir la de arriba (VK_UP).
Luego de estas declaraciones asignamos los valores capturados a los
textbox correspondientes, esto lo agregaremos despus del bloque else,
siempre dentro del mtodo TablaExternaKeyPresed() el cual estamos
digitando actualmente.

Listo, ahora si probamos nuestro formulario veremos que ahora tambin es


posible desplazarse en la tabla con las flechas direccionales, y en cuanto
desplacemos los valores de la fila seleccionada aparecern en los controles
designados para esa tarea:

S-ar putea să vă placă și