在循环中为 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_0
、item2
与 KeyEvent.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));
}
你也可以想到这个想法。
我创建了我的 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_0
、item2
与 KeyEvent.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));
}
你也可以想到这个想法。