我曾多次尝试通过咨询 Google 自行找到解决方案,但这个问题虽然看起来简单得可笑,但却没有记录在案的答案。在我看来。
我想知道的是:如何通过击键调用方法? 示例:按 ctrl + up -> 调用方法 ZoomUp();
ps:如果该击键可以绑定(bind)到 JTextPane,那就太好了。
更新
到目前为止,我的解决方案是:
创建项目:
JMenuItem up = new JMenuItem("up");
创建快捷方式:
up.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_UP, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
- 通过监听器捕获事件:
up.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent event) { //Do stuff } });
(- 永远不要添加该项目,因此它是一个隐藏的快捷方式) 但这显然是荒谬的。
最佳答案
您不能使用JMenuItem
创建“隐藏”快捷方式。一旦 JMenuItem
间接添加到 Window
(通常通过 <-JMenu
),JMenuItem
的快捷方式就会变为 Activity 状态><-JMenuBar
<-JFrame
)。如果没有这个链接,就无法知道加速器是否会被触发,因为同一个加速器可能会在不同的应用程序窗口中触发不同的操作。
您需要在要使用react的组件或框架上使用 KeyListener
。
关于java 按键方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27106204/