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. 如何关闭JFrame?
- 4. 在另一个jframe关闭事件显示一个新的jframe
- 5. 如何关闭JFrame后跟另一个JFrame?
- 6. 关闭主JFrame
- 7. 关闭一个JFrame而不关闭另一个?
- 8. 使用2个jframe swing Swing Jframe
- 9. 关闭JFrame
- 10. 如何在程序中间关闭JFrame
- 11. this.dispose()不工作,关闭一个JFrame
- 12. 关闭一个JFrame中所有剩余的打开的JFrame将关闭。
- 13. 在鼠标上关闭JFrame点击
- 14. JFrame关闭问题
- 15. 如何在不关闭主程序的情况下关闭jframe
- 16. 我的JFrame关闭,当我关闭另一个框架
- 17. 用JButton关闭JFrame
- 18. Java无法关闭JFrame
- 19. java swing - 在同一个jframe上绘制多个jpanels
- 20. 如何检查JFrame何时关闭?
- 21. 如何关闭打开另一个框架的JFrame?
- 22. 分配一个JFrame到另一个JFrame
- 23. Java - 如何检查JFrame是否关闭
- 24. 如何完全关闭/删除JFrame
- 25. 如何关闭当前的JFrame?
- 26. 如何检测JFrame已关闭?
- 27. 如何通过关闭JFrame直接关闭JOptionPane?
- 28. 创建一个圆形的Java Swing JFrame?
- 29. Java - 只关闭JFrame吗?
- 30. 需要关闭一个jframe,同时显示另一个
谢谢 - 我不得不删除了'WHEN_ANCESTOR_OF_FOCUSED_COMPONENT'约束让它在我的特殊情况下工作(带一个JFrame JFreeChart ChartPanel作为其唯一的孩子),但除此之外,这完全是诀窍。 – Bill 2011-04-28 12:24:55