我想要 ⌘ + w ^ 关闭一个窗口/JFrame
在我在Clojure写的一个程序中。这怎么可能实现?也欢迎纯Java解决方案。
我想要 ⌘ + w ^ 关闭一个窗口/JFrame
在我在Clojure写的一个程序中。这怎么可能实现?也欢迎纯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
在菜单栏上的菜单中。加速器将是 按Ctrl + w ^ 在Windows上。
可能更好的是使用 密钥绑定API 每个都有主面板 JFrame
(假设有多个)绑定相同的 KeyStroke
如上所述(WHEN_FOCUSED
)输入映射到其动作映射中关闭帧的动作。
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);
}
}