如何测试带键码的修饰符是否已关闭

时间:2011-08-24 22:39:17

标签: java

我有这段代码:

import java.awt.KeyEventDispatcher;
import java.awt.event.KeyEvent;
import java.awt.Toolkit;

public class KeyListener implements KeyEventDispatcher
{
    @Override
    public boolean dispatchKeyEvent(KeyEvent e)
    {
        if(e.getID() == KeyEvent.KEY_PRESSED)
        {
            if(e.isDown(Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()) && e.getKeyCode() == KeyEvent.VK_V)
            {
                paste();
            }   
        }
    }
}

问题是e.isDown不存在。 什么交替可以使用,对于mac来说它是 cmd + V 而对于其他OS来说是 control + V

1 个答案:

答案 0 :(得分:3)

KeyEvent扩展了InputEvent,因此您可以使用InputEvent的isControlDown()方法。

编辑:我发现此链接显示如何为命令键创建KeyStroke:

http://lists.apple.com/archives/java-dev/2007/May/msg00243.html

因此,您应该使用Key Bindings而不是使用KeyEventDispatcher。 Key Bindings允许您为给定的KeyStroke调用Action。 Swing旨在使用Key Bindings。