Come avere Command-W chiudere una finestra su Mac OS in Java o Clojure
Mi piacerebbe avere ⌘ + W chiude una finestra / JFrame
in un programma che sto scrivendo in Clojure. Come potrebbe essere realizzato? Anche le soluzioni Java pure sono benvenute.
11
1 answers
Ecco un modo:
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()));
Metti quel Action
in un menu sulla barra dei menu. L'acceleratore sarà Ctrl + W su Windows.
Probabilmente meglio sarebbe usare l'API Keybinding per avere il pannello principale in ogni JFrame
(supponendo che ce ne siano più) associare lo stesso KeyStroke
come sopra nella sua (WHEN_FOCUSED
) mappa di input a un'azione nella sua mappa di azione che chiude il frame.
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