2010-11-17 13 views

Répondre

13

est ici une façon:

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

Mettez cette Action dans un menu sur votre barre de menus. L'accélérateur sera Ctrl + W sous Windows.

probablement mieux serait d'utiliser le Keybinding API d'avoir le panneau principal dans chaque JFrame (en supposant qu'il n'y multiple) lier le même KeyStroke comme ci-dessus dans son (WHEN_FOCUSED) carte d'entrée à une action dans son plan d'action qui ferme le cadre .

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