2011-10-01 16 views
3

我曾尝试使用下面的设置JMenuItem的加速器:如何在Swing中使用带有加号或减号的菜单加速器?

item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); 

菜单项显示快捷方式⌘+(在Mac),但打这两个键不会触发它。我遇到了与减号-相同的问题。

是否有任何方法可以将这些标志中的任何一个作为快捷菜单项?

编辑 - 这是一个SSCCE:

public class MenuWithPlus { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 

     JMenuBar bar = new JMenuBar(); 
     JMenu menu = new JMenu("View"); 
     JMenuItem item = new JMenuItem("Zoom in"); 
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); 
     item.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       System.out.println("ZOOM IN TRIGGERED"); 
      } 
     }); 
     menu.add(item); 
     bar.add(menu); 
     frame.setJMenuBar(bar); 

     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 
} 
+0

你有代码(例如[SSCCE](http://pscode.org/sscce.html))供我们玩吗? –

+0

workforme - 在德国的键盘布局和加号/减号外的数字块的Windows vista – kleopatra

+0

你使用主键盘上的'+'/'-'键与数字键盘?他们被视为单独的密钥,所以请确保您始终如一地使用它们。 –

回答

1

您使用的是+/- 主键盘与数字键盘上的键?他们被视为单独的密钥,所以请确保您始终如一地使用它们。

认为VK_PLUS不用于通常的加号键( - =美式键盘上),而无论是数字键盘+,或者在一些德国键盘上的+关键。假设你有美式键盘,你可能需要Shift以及VK_EQUALS

请参阅this old bugthis discussion

+0

我的梦想(但似乎越来越不可能)是用户可以用主键盘触发它,但这会导致问题,因为每个键盘都有它自己的+和 - 键布局(例如在我的法语键盘上, - 键会触发VK_EQUALS事件,等号(带有移位的正数)会触发VK_SLASH事件...)。你认为这有一个通用的解决方法吗? – krookedking

2

在加速器代码必须修改到:

item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, Event.CTRL_MASK)); 

一个测试,我做了补充框架上的一个关键事件监听器,赶上去键值为正(在这种情况下ADD)。

frame.addKeyListener(new KeyAdapter() { 
    @Override 
    public void keyPressed(KeyEvent e) { 
     System.out.println(e.getKeyCode()); 
    } 
    }); 
+0

当我听到按键事件时,我得到了一个VK_SLASH事件my =(和shift +)键...这可能是因为我的法语键盘。你认为这有一个通用的解决方法吗? – krookedking

+0

通过下面的代码,您可以获得键盘布局,然后创建一个方法来映射您需要的密钥。 InputContext.getInstance()的getLocale() –

相关问题