【问题标题】:How to have Command-W close a window on Mac OS in Java or Clojure如何让 Command-W 在 Java 或 Clojure 中关闭 Mac OS 上的窗口
【发布时间】:2010-11-17 22:48:40
【问题描述】:

我想让 ⌘ + W 在我用 Clojure 编写的程序中关闭一个窗口/JFrame。这怎么可能实现?也欢迎纯 Java 解决方案。

【问题讨论】:

    标签: java macos clojure keyboard-shortcuts


    【解决方案1】:

    这是一种方法:

     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);      
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2014-12-22
      • 2010-09-20
      • 1970-01-01
      相关资源
      最近更新 更多