我想让 ⌘ + W 在我用 Clojure 编写的程序中关闭窗口/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
中的主面板(假设有多个)在其 (WHEN_FOCUSED
) 输入映射中将相同的 KeyStroke
绑定(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);
}
}
关于java - 如何让 Command-W 在 Mac OS 上用 Java 或 Clojure 关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4209975/