JTable y F2 Key

realshit
17 de Mayo del 2006
Tengo una barra de menús, con eventos asociados a un inputMap. Todos funcionan correctamente, menos la acción asociada a la tecla F2, que cuando el foco se queda en una JTable, esta se "come" dicha pulsación, y no llega a ejecutarse mi acción. ¿Cómo puedo evitar que la tabla consuma la pulsación de F2 y ésta llegue a dónde tiene que llegar?

jmromero
17 de Mayo del 2006
Yo tengo una tabla que extiende de JTable, y lo he resuelto sobreescribiendo el método processKeyBinding de la forma:

if (isFocusOwner() && pressed
&& e.getKeyCode() == KeyEvent.VK_F2 && e.getModifiers() == 0 // No se pulsa ALT, SHIFT ni CTRL
&& condition == WHEN_FOCUSED
&& !this.getModel().isCellEditable(this.getSelectedRow(), this.getSelectedColumn()))
{
// Acción asociada a F2
return true;
}
else
return super.processKeyBinding(ks, e, condition, pressed);


Espero que esto te sirva.

jmromero
17 de Mayo del 2006
La cabecera del método processKeyBinding es la siguiente:

protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed)