我正在尝试编写一段代码,以便在按下某个键时它会执行某些操作,但是必须释放该键然后再次按下以重新触发该事件。因此,如果用户只是按下键,它就不会一遍又一遍地进行,而是必须反复按下和释放。
到目前为止,我有:
if(keyLifted)
{
if(Keyboard.isKeyDown(45))
{
keyLifted = false;
dostuff;
}
else if(Keyboard.isKeyDown(46))
{
keyLifted = false;
dostuff();
}
else
{
keyLifted = true;
}
}
但是由于显而易见的原因,这是有缺陷的(如果钥匙已被抬起,它只会将钥匙重置为未抬起:如果钥匙被按下,它将不会被设置为未按下)。我尝试了几种变体,但我不能让它起作用。
提前感谢您的帮助!
答案 0 :(得分:0)
您应该使用KeyListener
来捕获键盘事件。你走了:
public class KeyListenerExample extends JFrame {
public KeyListenerExample() {
addKeyListener(new KeyAdapter() {
private boolean keyLifted;
public void keyReleased(KeyEvent e) {
keyLifted = true;
}
public void keyPressed(KeyEvent e) {
keyLifted = false;
switch (e.getKeyChar()) {
case 45:
doStuff();
break;
case 46:
doStuff();
break;
}
}
});
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void doStuff() {
System.out.println("stuff");
}
/**
* @param args
*/
public static void main(String[] args) {
new KeyListenerExample();
}
}
我保留了keyLifted
因为它在你的例子中。但我认为对于通常的键盘来说你不需要它。