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

Add shortcut for JMenuItem in loop

我创建了我的 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。

有什么简单的方法吗?

你可以这样做:

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 关联,依此类推。

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));
    }

你也可以想到这个想法。