【发布时间】:2012-05-19 16:08:03
【问题描述】:
我使用KeyAdpater 来获取事件和方法addKeyListener 并且工作正常。问题是,当按下键时,动作只发生一次,而不是在按下时发生,在按住键 3-4 秒后,动作一直发生,这正是我想要的。
我想知道是否有好的方法可以在从一开始就一直按下键而不是在按住 3-4 秒后一直执行该操作。
我想到了下一个解决方案,但也许已经有一种实现的方法:
public abstract class MyKeyAdapter extends KeyAdapter{
private boolean isPressed = false;
private int pressedKey = 0;
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while(isPressed)
keyPressedAction(pressedKey);
}
});
@Override
public void keyPressed(KeyEvent e) {
if(!isPressed){
pressedKey = e.getKeyCode();
t.start();
}
}
@Override
public void keyReleased(KeyEvent e) {
if(isPressed && e.getKeyCode()==pressedKey)}
isPressed = false;
}
public abstract void keyPressedAction(int key);
}
【问题讨论】:
标签: java swing keyboard key-bindings onkeypress