【发布时间】:2015-07-06 15:23:08
【问题描述】:
我已经阅读了几个主题,展示了如何创建 KeyBinding,但是,没有一个主题完全适合我。我的 JFrame 有一个 JMenuBar,对于菜单项,NetBeans 正在正确生成代码,例如:
mniExit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK));
mniExit.setText(bundle.getString("Menu.File.Exit")); // NOI18N
mniExit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mniExitActionPerformed(evt);
}
});
mnuFile.add(mniExit);
然而,当菜单被隐藏时,只有这个绑定是不可见的。我试过类似的东西:
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(mniExit.getAccelerator(), "exit");
getRootPane().getActionMap().put("exit", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
mniExit.doClick();
}
});
但它根本不起作用。我做错了什么?
提前致谢!
【问题讨论】:
-
如果您没有很快获得帮助,请考虑创建并发布minimal example program,您可以在其中创建运行、编译、不需要外部依赖项(图像、数据库)的最小程序,这表明您的问题对我们来说。
标签: java swing events action key-bindings