62,628
社区成员
发帖
与我相关
我的任务
分享
现在我想这样处理:分别取得按键按下的时间和按键松开的时间,然后求出两者之差,大于2000ms就是有效,否则无效。这样是否可行?对系统资源浪费大吗?
/*
* 测试q键按下2秒后才执行相应动作
*/
package test;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class KeyEventTest extends JFrame implements KeyListener {
long pressTime=0;
long releasedTime=0;
boolean keyEnable=true;
public static void main(String[] args) {
KeyEventTest ket = new KeyEventTest();
}
public KeyEventTest() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(null);
this.setTitle("KeyEventTest");
this.setSize(300, 300);
this.setVisible(true);
addKeyListener(this);
}
public void keyPressed(KeyEvent e) {
if (keyEnable ==true) {
pressTime = System.currentTimeMillis();
keyEnable=false;
}
}
public void keyReleased(KeyEvent e) {
releasedTime=System.currentTimeMillis();
long afterTime=releasedTime-pressTime;
if((e.getKeyCode()==81)&&(afterTime>=2000)){
System.out.println("有效按键,键码="+e.getKeyCode());
}else{
System.out.println("无效按键或按下时间太短,键码="+e.getKeyCode()+" 按下时间="+String.valueOf(afterTime)+"ms");
}
keyEnable=true;
}
public void keyTyped(KeyEvent e) {
}
}