具有多个键的 MenuShortcut
MenuShortcut with multiple keys
我正在尝试一些 Java AWT,我正在尝试创建一个需要按下多个键的菜单快捷方式(例如 Alt + Space + H)。
我通过这样做知道:
MenuItem item= new MenuItem("Text", new MenuShortcut(KeyEvent.VK_ALT));
我可以创建一个需要按下 Ctrl + Alt 的快捷方式。但是有没有办法添加更多的密钥?
来自implementation of MenuShortcut class:
public MenuShortcut(int key) { ...
public MenuShortcut(int key, boolean useShiftModifier) { ...
这意味着使用 MenuShortcut 我们最多可以指定三个键 - Ctrl + Shift + Key。
MenuShortcut menushortcut_1 = new MenuShortcut(KeyEvent.VK_A, false); // Ctrl + A
MenuShortcut menushortcut_2 = new MenuShortcut(KeyEvent.VK_A, true); // Ctrl + Shift + A
您可以做的是扩展 MenuShortcut class 并扩展接受的键数(非常基本的示例,需要一些工作):
public class MyMenuShortcut extends MenuShortcut {
int key1;
int key2;
...
public MyMenuShortcut(int key1, int key2, boolean useShiftModifier) {
super(key1, useShiftModifier);
this.key1 = key1;
this.key2= key2;
}
// toString() must be overriden to display in the menu
public String toString() {
int modifiers = 0;
if (!GraphicsEnvironment.isHeadless()) {
modifiers = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
}
if (usesShiftModifier()) {
modifiers |= Event.SHIFT_MASK;
}
return KeyEvent.getKeyModifiersText(modifiers) + "+" +
KeyEvent.getKeyText(key1) + "+" + KeyEvent.getKeyText(key2);
}
我会留给您考虑如何容纳大量密钥。
然后在您的原始代码中,您将执行如下操作:
MenuShortcut menushortcut_3 = new MyMenuShortcut(KeyEvent.VK_C, KeyEvent.VK_B, true);
我正在尝试一些 Java AWT,我正在尝试创建一个需要按下多个键的菜单快捷方式(例如 Alt + Space + H)。
我通过这样做知道:
MenuItem item= new MenuItem("Text", new MenuShortcut(KeyEvent.VK_ALT));
我可以创建一个需要按下 Ctrl + Alt 的快捷方式。但是有没有办法添加更多的密钥?
来自implementation of MenuShortcut class:
public MenuShortcut(int key) { ...
public MenuShortcut(int key, boolean useShiftModifier) { ...
这意味着使用 MenuShortcut 我们最多可以指定三个键 - Ctrl + Shift + Key。
MenuShortcut menushortcut_1 = new MenuShortcut(KeyEvent.VK_A, false); // Ctrl + A
MenuShortcut menushortcut_2 = new MenuShortcut(KeyEvent.VK_A, true); // Ctrl + Shift + A
您可以做的是扩展 MenuShortcut class 并扩展接受的键数(非常基本的示例,需要一些工作):
public class MyMenuShortcut extends MenuShortcut {
int key1;
int key2;
...
public MyMenuShortcut(int key1, int key2, boolean useShiftModifier) {
super(key1, useShiftModifier);
this.key1 = key1;
this.key2= key2;
}
// toString() must be overriden to display in the menu
public String toString() {
int modifiers = 0;
if (!GraphicsEnvironment.isHeadless()) {
modifiers = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
}
if (usesShiftModifier()) {
modifiers |= Event.SHIFT_MASK;
}
return KeyEvent.getKeyModifiersText(modifiers) + "+" +
KeyEvent.getKeyText(key1) + "+" + KeyEvent.getKeyText(key2);
}
我会留给您考虑如何容纳大量密钥。
然后在您的原始代码中,您将执行如下操作:
MenuShortcut menushortcut_3 = new MyMenuShortcut(KeyEvent.VK_C, KeyEvent.VK_B, true);