Я хотел бы иметь ⌘ + W закрыть окно /JFrame
в программе, которую пишу в Clojure. Как это можно сделать? Чистые Java-решения также приветствуются.
Как заставить Command-W закрыть окно в Mac OS на Java или Clojure
Ответ 1
Здесь один из способов:
Action closeWindow = new AbstractAction("Close Window") {
@Override public void actionPerformed(ActionEvent e) {
// window closing code here
}
};
closeWindow.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(
KeyEvent.VK_W, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
Поместите это Action
в меню на панели меню. Ускоритель будет Ctrl + W в Windows.
Вероятно, лучше было бы использовать Keybinding API, чтобы главная панель в каждом JFrame
(при условии, что существует несколько) связывает те же KeyStroke
, что и выше, в его (WHEN_FOCUSED
) входной карте на действие в своей карте действий, которая закрывает кадр.
public class ClosableWindow extends JFrame {
public void setUp() {
JPanel mainPanel = createMainPanel();
int mask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
KeyStroke closeKey = KeyStroke.getKeyStroke(KeyEvent.VK_W, mask);
mainPanel.getInputMap().put(closeKey, "closeWindow");
mainPanel.getActionMap().put("closeWindow",
new AbstractAction("Close Window") {
@Override public void actionPerformed(ActionEvent e) {
setVisible(false);
dispose();
}
});
getContentPane().add(mainPanel);
}
}