【发布时间】:2010-11-17 22:48:40
【问题描述】:
我想让 ⌘ + W 在我用 Clojure 编写的程序中关闭一个窗口/JFrame。这怎么可能实现?也欢迎纯 Java 解决方案。
【问题讨论】:
标签: java macos clojure keyboard-shortcuts
我想让 ⌘ + W 在我用 Clojure 编写的程序中关闭一个窗口/JFrame。这怎么可能实现?也欢迎纯 Java 解决方案。
【问题讨论】:
标签: java macos clojure keyboard-shortcuts
这是一种方法:
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 中的主面板(假设有多个)在其(WHEN_FOCUSED)输入映射中绑定相同的KeyStroke 到一个动作其关闭框架的动作图。
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);
}
}
【讨论】: