菜单快捷键

时间:2019-07-22 23:02:17

标签: java awt

我正在尝试一些Java AWT,并且正在尝试创建一个菜单快捷方式,该快捷方式要求按下多个键(例如Alt + Space + H)。

我知道这样做:

MenuItem item= new MenuItem("Text", new MenuShortcut(KeyEvent.VK_ALT));

我可以创建一个快捷方式,要求按Ctrl + Alt。但是有办法添加更多密钥吗?

1 个答案:

答案 0 :(得分:0)

来自implementation of MenuShortcut class

public MenuShortcut(int key) { ...
public MenuShortcut(int key, boolean useShiftModifier) { ...

这意味着使用MenuShortcut,我们最多可以指定三个键-Ctrl + Shift +键。

MenuShortcut menushortcut_1 = new MenuShortcut(KeyEvent.VK_A, false); // Ctrl + A
MenuShortcut menushortcut_2 = new MenuShortcut(KeyEvent.VK_A, true);  // Ctrl + Shift + A

您可以做的是扩展MenuShortcut类并扩展接受的键的数量(非常基本的示例,将需要一些工作):

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

enter image description here

相关问题