Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MenuShortcut具有多个关键点_Java_Awt - Fatal编程技术网

Java MenuShortcut具有多个关键点

Java MenuShortcut具有多个关键点,java,awt,Java,Awt,我正在尝试一点JavaAWT,并尝试创建一个需要按下多个键的菜单快捷方式(例如Alt+Space+H) 我知道通过这样做: MenuItem item= new MenuItem("Text", new MenuShortcut(KeyEvent.VK_ALT)); 我可以创建一个需要按下Ctrl+Alt的快捷方式。但是有没有办法添加更多密钥?来自: 这意味着使用MenuShortcut最多可以指定三个键-Ctrl+Shift+Key MenuShortcut menushortcut_1 =

我正在尝试一点JavaAWT,并尝试创建一个需要按下多个键的菜单快捷方式(例如Alt+Space+H)

我知道通过这样做:

MenuItem item= new MenuItem("Text", new MenuShortcut(KeyEvent.VK_ALT));
我可以创建一个需要按下Ctrl+Alt的快捷方式。但是有没有办法添加更多密钥?

来自:

这意味着使用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类并扩展接受的键数(非常基本的示例,需要做一些工作):

我会让你考虑如何容纳大量的钥匙

然后在原始代码中,您将执行以下操作:

MenuShortcut menushortcut_3 = new MyMenuShortcut(KeyEvent.VK_C, KeyEvent.VK_B, true);

我从未见过需要键入两个字符才能激活顶级菜单中的菜单项的用户界面。我认为这在AWT中是不可能的,在Swing中进行这项工作会相当复杂。出于好奇,你为什么需要这个?我听说有一种方法可以用几乎无穷无尽的键来创建快捷方式,所以我有了这个想法,制作了一个小程序,除了同时按下11个键之外,什么都不做。Bommlon你有10个手指
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);