Java - Enter en JTable

 
Vista:

Enter en JTable

Publicado por José (3 intervenciones) el 06/08/2007 16:20:12
Hola amigos:

Tengo un JTable, resulta que para hacer que el programa se use lo más rápido posible, estoy haciendo que muchas cosas se hagan por medio de teclado, para no tener que estar alternando entre mouse y teclado.

Por ejemplo en una caja de texto hago una consulta a la BD y en el JTable me muestran los resultados, al momento de presionar la tecla DOWN en el caja de texto, me pasa el foco al JTable y asi no tengo que cambiarme del teclado al mouse para seleccionar alguna opcion del JTable.

Mi problema esta en que después de que me situo en el JTable, me desplazo con las flechas sobre las diferentes filas pero al momento de presionar ENTER para seleccionar los valores que hay en esa fila, me pasa automaticamente a la fila siguiente y por ende me toma los valores que hay en esa "siguiente" fila y no en la fila que realmente seleccione.

He buscado algun método o algo asi para quitar este comportamiento de que la tecla ENTER en un JTable funcione para desplazarme a la fila siguiente, quiero que al presionar enter se quede ahi en esa fila!!

Agradeceria mucho sus respuestas y/o sugerencias.

De antemano gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Enter en JTable

Publicado por Ascari Romo (36 intervenciones) el 08/08/2007 05:50:25
Definitivamente no hay un método para deshabilitar esa opción, o al menos no que yo lo conozca. Sin embargo la solución es muy fácil:

En un evento KeyReleassed interceptas las teclas DOWN y UP, y ahi mismo pondrias algo asi:

fila = tabla.getRowSelected();

con esto ya tienes todo, basta en el evento KeyTyped interceptar la tecla ENTER y como comentas, cuando se presione esa tecla, se esperaria que se pasara a la fila siguiente y me tomara a esa como la fila seleccionada cuando en realidad yo seleccione la fila anterior... Para resolver esto basta con hacer:

tabla.setRowSelectionInterval(fila,fila);

de esta forma por ejemplo si estas en la fila 0 y con la tecla DOWN te dezplazas 2 filas más, fila tendra el valor de 2...

Y al momento de dar ENTER, "forzas" a que la fila seleccionada sea el valor de fila que en este caso seria 2 y NO 3 (fila siguiente).

Recibe un cordial saludo!!
WinDoctor_Advanced
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar