Лучший способ, который я вижу, - добавить Action
в карту действий корневой панели и связать это действие с ключом перехода с помощью входной карты корневой панели.
Для этого вам понадобится Action
. (Т. Е cancelButton.getAction() != null
) Если поведение кнопки ОТМЕНА осуществлялются как действие, то это будет работать:
getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "CANCEL");
getRootPane().getActionMap().put("CANCEL", cancelButton.getAction());
В противном случае, если логика кнопка отмены осуществлялются через ActionListener
, вы могли бы иметь actionPerformed()
метод ActionListener
вызовите метод private void onCancel()
, который реализует логику и зарегистрирует действие «отменить», которое вызывает тот же метод.
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();
}
});
Угадайте, что вы имеете в виду ключ эвакуации. – NateS