gpt4 book ai didi

Java JMenu setAccelerator() 问题

转载 作者:行者123 更新时间:2023-12-04 14:01:16 24 4
gpt4 key购买 nike

当我将 setAccelerator() 设置为 Control + A 或 Control + P 并运行该程序时,它没有检测到击键。

代码如下:

  menuItem = new JMenuItem("About");
menuItem.setActionCommand("About");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, Event.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_A);
menuItem.addActionListener(this);
menu.add(menuItem);

然后当它被按下时它应该调用 Action 监听器:

public void actionPerformed(ActionEvent e) {

if(e.getActionCommand().equals("About")) {

System.out.println("About");

}
}

如果重要的话,我会在 Mac 上的 Eclipse 中运行它。

最佳答案

Control-A 和 Control-P 都是可能已被截获的击键,具体取决于您的平台和具有键盘焦点的内容。 Control-A 可能已被拦截并解释为“全选”,而 Control-P 可能已被拦截并解释为“粘贴”。

如果您选择不常用的击键而不是“Control-A”,例如“Control-Shift-A”或“Control-B”,会怎样?这是您的代码的修改版本,它使用 Control-Shift-A 而不是 Control-A:

menuItem = new JMenuItem("About");
menuItem.setActionCommand("About");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, Event.CTRL_MASK | Event.SHIFT_MASK));
menuItem.setMnemonic(KeyEvent.VK_A);
menuItem.addActionListener(this);
menu.add(menuItem);

我在自己的系统上使用 the JMenu demo from the Swing tutorial 测试了此更改,我发现(和你一样)将 Control-A 注册为加速器没有任何效果。但是,将 Control-Shift-A 注册为加速器效果很好。

关于Java JMenu setAccelerator() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348818/

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