Desactivar evento tecla Enter en JTable
Cuando presionas la tecla Enter
dentro de una JTable, notarás como la selección de la fila pasa a la siguiente fila de la tabla (a la primera en el caso en que nos encontremos en la última). Puedes cambiar esto jugando con la política de "traversal keys", pero esto es bastante complicado.
La forma más sencilla de evitar este comportamiento estándar es consumir el evento cuando la tecla Enter
se presione. Puedes conseguir esto con el siguiente código:
1JTable jMyTable = new JTable();
2jMyTable.addKeyListener(new java.awt.event.KeyAdapter() {
3 public void keyPressed(java.awt.event.KeyEvent evt) {
4 jMyTableKeyPressed(evt);
5 }
6 });
7 private void jMyTableKeyPressed(java.awt.event.KeyEvent evt) {
8 if(evt.getKeyCode() == evt.VK_ENTER){
9 evt.consume();
10 }
11 }
12};
Es muy importante consumir el evento en el evento keyPressed()
y no durante otro de los posibles KeyEvents. Lo contario implicaría consumir el evento una vez ya se ha propagado, por lo que la selección continuaría avanzando a la siguiente fila.