2016-01-06 57 views
0

我创建了具有特定类别和项目的JMenu。我想为每个项目添加for()快捷方式取决于项目数量,但我不知道如何。在循环中添加JMenuItem的快捷方式

在为LOPP我用这个:

item.setAccelerator(KeyStroke.getKeyStroke(
        java.awt.event.KeyEvent.VK_x, 
        java.awt.Event.CTRL_MASK)); 

在“X”我想从0-9使用数字,如果我有更多的项目超过10然后换VK_x到VK_NUMPADx。

有没有可能是一些简单的方法?

回答

0

你可以做这样的事情:

int[] events = { KeyEvent.VK_0, KeyEvent.VK_1 ... KeyEvent.VK_9, KeyEvent.VK_NUMPAD0 ... KeyEvent.VK_NUMPAD9 }; 
JMenuItem[] items = {item1,item2 ... item20}; 
for(int i = 0;i < events.length && i < items.length;i++){ 
    items[i].setAccelerator(KeyStroke.getKeyStroke(
       events[i], 
       Event.CTRL_MASK)); 
} 

在这个例子中,item1KeyEvent.VK_0相关,item2KeyEvent.VK_1等。

+0

谢谢你的帮助:)它的工作原理,在我的情况下,我更喜欢你的方式来做到这一点。 – ullQuiorra

+0

@ullQuiorra我很高兴我能帮到你。祝你好运。 – Titus

0

KeyEvent.VK_0到KeyEvent.VK_9表示为十进制数48 - 57 KeyEvent.VK_NUMPAD0到KeyEvent.VK_NUMPAD9是106 - 115

int keyCode; 
    for (int i = 0; i < menu.getItemCount(); i++) { 
     JMenuItem menuItem = menu.getItem(i); 
     if (i < 10) { 
      keyCode = 48 + i; 
     } else { 
      keyCode = 106 + i % 10; 
     } 
     menuItem.setAccelerator(KeyStroke.getKeyStroke(
       keyCode, 
       java.awt.Event.CTRL_MASK)); 
    } 

你可以心里有这个想法也。

+0

谢谢你的帮助:) – ullQuiorra