2011-11-01 16 views
5

Si alguien edita el contenido de la celda de una JTable y presiona enter, el contenido se modifica y la selección de la tabla se mueve a la siguiente fila.Cómo mantener JTable en la celda editada

¿Es posible prohibir que JTable pase a la siguiente fila después de una edición de celda?

La razón es que mi programa sincroniza algunos otros widgets en la selección de celda usando un ListSelectionListener, y no quiero tener la próxima fila seleccionada después de editar la celda actual.

Respuesta

7

El enlace predeterminado para Ingrese es el Action llamado selectNextRowCell. Para anular la entrada en el mapa de entrada WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, deberá proporcionar un doNothing()Action, como se sugiere en How to Use Key Bindings: How to Make and Remove Key Bindings.

+0

¡Gran sugerencia! El trabajo completo para hacer es agregar una llamada a table.getCellEditor(). StopCellEditing(); en el método actionPerformed (...). Sin esta llamada, la celda permanece en modo edición cuando el usuario presiona enter. – Martin

+0

Buen punto; ver también [Usar un editor para validar el texto ingresado por el usuario] (http://download.oracle.com/javase/tutorial/uiswing/components/table.html#validtext). – trashgod

1

No estoy seguro de cómo hacer esto exactamente, pero miraría en ActionMap. Debería poder modificar o reemplazar la Acción asignada a la tecla 'Intro'.

¡Buena suerte!

Cuestiones relacionadas