Je voudrais avoir ⌘ +W fermer une fenêtre/JFrame
dans un programme que je vous écris en Clojure. Comment cela pourrait-il être accompli? Les solutions Java pures sont également les bienvenues.Comment avoir Commande-W fermer une fenêtre sur Mac OS en Java ou Clojure
11
A
Répondre
13
est ici 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 cette Action
dans un menu sur votre barre de menus. L'accélérateur sera Ctrl + W sous Windows.
probablement mieux serait d'utiliser le Keybinding API d'avoir le panneau principal dans chaque JFrame
(en supposant qu'il n'y multiple) lier le même KeyStroke
comme ci-dessus dans son (WHEN_FOCUSED
) carte d'entrée à une action dans son plan 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);
}
}