2010-11-17 25 views

Trả lời

13

Dưới đây là một cách:

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

Đặt rằng Action trong một menu trên thanh menu của bạn. Máy gia tốc sẽ là Ctrl + W trên Windows.

Có lẽ tốt hơn là nên sử dụng Keybinding API có bảng điều khiển chính trong mỗi JFrame (giả sử có nhiều) ràng buộc cùng KeyStroke như trên trong (WHEN_FOCUSED) bản đồ đầu vào của nó đến một hành động trong bản đồ hành động của mình rằng đóng khung .

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);  
    } 
} 
Các vấn đề liên quan