Я создаю приложение, в котором любой открытый Jpanel или JFrame или Диалог должен быть закрыт при нажатии Escape кнопки клавиатура.
Если я открываю любую панель и нажимаю кнопку Escape прямого нажатия, чтобы она успешно закрывалась без проблем ... но когда я пытаюсь закрыть ее с помощью клавиши Escape после выполнения чего-либо в этом JPanel, JFrame или Dialog, она не может закрыться .
Пожалуйста, помогите мне, если я что-то делаю неправильно
Заранее спасибо ...
Мой метод
public static void addKeyBinding(JComponent c, final Object promptControl) {
debugLogger.debug("Start Escape Key Binding ");
Action escape = new AbstractAction() {
{
putValue(NAME, "escape");
}
public void actionPerformed(ActionEvent e) {
try {
JComponent source = (JComponent) e.getSource();
Window window = SwingUtilities.getWindowAncestor(source);
window.dispose();
Dialog dialog = (Dialog) source.getFocusCycleRootAncestor();
dialog.dispose();
debugLogger.debug("source = " + source.getClass().getName()
+ "\n"
+ "source.focusCycleRootAncestor = "
+ source.getFocusCycleRootAncestor().getClass().getName());
} catch (Exception ex) {
errorLogger.error("Exception caught while closing the window." + x.toString());
}
}
};
Object name = escape.getValue(Action.NAME);
c.getInputMap().put(KeyStroke.getKeyStroke("ESCAPE"), name);
c.getActionMap().put(name, escape);
debugLogger.debug("End Escape Key Binding ");
}