La mejor manera que puedo ver es agregar un Action
al mapa de acción del panel raíz y vincular esa acción con la clave de escape usando el mapa de entrada del panel raíz.
Para esto, necesita un Action
. (. Es decir cancelButton.getAction() != null
) Si el comportamiento de su botón de cancelación se implementa como una acción, entonces esto va a trabajar:
getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "CANCEL");
getRootPane().getActionMap().put("CANCEL", cancelButton.getAction());
De lo contrario, si la lógica del botón de cancelación se implementa a través de un ActionListener
, usted podría tener el método de la ActionListener
actionPerformed()
llama a un método private void onCancel()
que implementa la lógica y registra una acción "cancelar" que llama al mismo método.
getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "CANCEL");
getRootPane().getActionMap().put("CANCEL", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e)
{
onCancel();
}
});
Supongo que significa escape key .. – NateS