我想让⌘+ W在用Clojure编写的程序中关闭window/JFrame
。如何做到这一点?也欢迎使用纯Java解决方案。
最佳答案
这是一种方法:
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
放在菜单栏上的菜单中。在Windows上,加速器为Ctrl +W。可能更好的方法是使用Keybinding API使每个
JFrame
中的主面板(假设有多个)将其(KeyStroke
)输入映射中的上述WHEN_FOCUSED
绑定(bind)到其 Action 图中的 Action 上,以关闭框架。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);
}
}