在循环中添加JMenuItem的快捷方式

时间:2016-01-06 16:55:18

标签: java keystroke jmenu

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

对于lopp我用这个:

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

在' x'我想使用0-9之间的数字,如果我有超过10的项目,那么将VK_x更改为VK_NUMPADx。

有可能是一种简单的方法吗?

2 个答案:

答案 0 :(得分: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));
}

在此示例中,item1将与KeyEvent.VK_0item2KeyEvent.VK_1相关联,依此类推。

答案 1 :(得分: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));
    }

你也可以记住这个想法。