gpt4 book ai didi

java - 是否可以为一个 JMenuItem 定义多个快捷键?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:44:24 24 4
gpt4 key购买 nike

setAccelerator() 有问题。现在,我有适用于 Ctrl+X 删除操作的代码。对于相同的 JMenuItem,我也想将加速器设置为 Shift+Delete。

我的代码如下:

JMenuItem item = new JMenuItem(menuText);
item.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_X, KeyEvent.CTRL_MASK));
item.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_DELETE, KeyEvent.SHIFT_MASK));

但这仅适用于 Shift+Delete 操作。似乎它正在覆盖 Ctrl+X 操作。我们可以同时使用这两种击键吗?

请指导。

最佳答案

是的,这是可以做到的。在幕后,setAccelerator() 只是创建一个键绑定(bind),但是正如您所注意到的,第二个绑定(bind)替换了第一个。

因此,您需要创建一个 Action(而不是 ActionListener)来将 添加到菜单项。阅读 How to Use Actions 上的 Swing 教程部分想要查询更多的信息。现在您已经创建了 Action,您可以通过手动创建 Key Binding 与另一个 KeyStroke 共享 Action。您可以在 How to Use Key Bindings 上阅读 Swing 教程中的部分详细解释。或者您可以在 Key Bindings 上阅读我的博客其中给出了一些简单的代码示例。

第二个绑定(bind)不会显示在菜单项本身上。

关于java - 是否可以为一个 JMenuItem 定义多个快捷键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1946232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com