我有这段代码:
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 ?
答案 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。