Я знаю, как закрыть jframe, если я в каком-то текстовом поле или кнопке и т.д. Используя метод keyPressed()
, я обрабатываю ключевые события для текстовых полей, кнопок. Но я хочу, чтобы jframe был закрыт, когда я нажимаю escape куда угодно (не только в определенных текстовых полях и т.д.) Внутри jframe. Является ли это возможным?
Если ход управляющего ключа не привязан к фокусовому подкомпоненту, тогда должно работать следующее:
// mainFrame is the JFrame
Action dispatchClosing = new AbstractAction() {
public void actionPerformed(ActionEvent event) {
mainFrame.dispatchEvent(
new WindowEvent(mainFrame, WindowEvent.WINDOW_CLOSING));
}
};
KeyStroke escape = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0);
JRootPane rootPane = mainFrame.getRootPane();
rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "closeWindow");
rootPane.getActionMap().put("closeWindow", dispatchClosing);
JFrame
содержимого панели «sJOptionPane
.