2
A
回答
3
通常,對於頂級窗口鍵綁定完全由底層操作系統來處理。因此,在Mac上,它們應該已經存在,在另一個系統上沒有元鍵(不知道,但也許有一些模擬)。
無論如何,你可以添加你喜歡Jframe的的rootPane任何額外的按鍵綁定:
private void addMacCloseBinding(JFrame frame) {
frame.getRootPane().getActionMap().put("close-window", new CloseAction(frame));
frame.getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.put(KeyStroke.getKeyStroke("control W"), "close-window");
frame.getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.put(KeyStroke.getKeyStroke("meta W"), "close-window");
}
public class CloseAction extends AbstractAction {
private Window window;
public CloseAction(Window window) {
this.window = window;
}
@Override
public void actionPerformed(ActionEvent e) {
if (window == null) return;
window.dispatchEvent(new WindowEvent(
window, WindowEvent.WINDOW_CLOSING));
}
}
1
你應該能夠說明這樣的菜單快捷方式:
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,
ActionEvent.META_MASK));
相關問題
- 1. Swing WindowListener如何否決JFrame關閉
- 2. 如何關閉新的打開jframe上的前一個jframe
- 3. 如何在關閉JasperViewer時關閉JFrame
- 4. 如何關閉JFrame?
- 5. 當一個JFrame被關閉
- 6. 在另一個jframe關閉事件顯示一個新的jframe
- 7. 如何關閉JFrame後跟另一個JFrame?
- 8. 關閉主JFrame
- 9. 關閉一個JFrame而不關閉另一個?
- 10. 如何防止JFrame關閉
- 11. 如何關閉的JFrame
- 12. 使用2個jframe swing Swing Jframe
- 13. 如何在另一個關閉後顯示JFrame?
- 14. 關閉JFrame
- 15. 如何在程序中間關閉JFrame
- 16. this.dispose()不工作,關閉一個JFrame
- 17. 關閉一個JFrame中所有剩餘的打開的JFrame將關閉。
- 18. 在鼠標上關閉JFrame點擊
- 19. 如何在不關閉主程序的情況下關閉jframe
- 20. JFrame關閉問題
- 21. 我的JFrame關閉,當我關閉另一個框架
- 22. JFrame關閉按鈕
- 23. 用JButton關閉JFrame
- 24. 當一個配置文件被關閉
- 25. Java無法關閉JFrame
- 26. 當JFrame關閉時
- 27. java swing - 在同一個jframe上繪製多個jpanels
- 28. 如何檢查JFrame何時關閉?
- 29. 關閉JFrame窗口?
- 30. 如何關閉打開另一個框架的JFrame?
謝謝 - 我不得不刪除了'WHEN_ANCESTOR_OF_FOCUSED_COMPONENT'約束讓它在我的特殊情況下工作(帶一個JFrame JFreeChart ChartPanel作爲其唯一的孩子),但除此之外,這完全是訣竅。 – Bill 2011-04-28 12:24:55