Comment avoir Command-W fermer une fenêtre sur Mac OS en Java ou Clojure
J'aimerais avoir ⌘ + W fermer une fenêtre/JFrame
dans un programme, que je suis en train d'écrire en Clojure. Comment cela peut-il être réalisé? Les solutions Java pures sont également les bienvenues.
11
1 answers
Voici une façon:
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()));
Mettez ce Action
dans un menu de votre barre de menus. L'accélérateur sera Ctrl + W sur Windows.
Probablement mieux serait d'utiliser le Keybinding API pour que le panneau principal dans chaque JFrame
(en supposant qu'il y en ait plusieurs) lie le même KeyStroke
que ci-dessus dans sa carte d'entrée (WHEN_FOCUSED
) à une action dans sa carte d'action qui ferme le cadre.
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);
}
}
13
Author: ColinD, 2016-01-08 04:26:49