如何在KeyEvent发生时按下一个for循环(在侦听器之外)(按下S键)?我试图这样做,但它不起作用。
这是听众:
=
这是for循环:
public class ListenKey implements KeyListener{
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode()==KeyEvent.VK_S)
Spressed = true;
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode()==KeyEvent.VK_S)
Spressed = true;
}
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_S)
Spressed = true;
}
}
我正在尝试创建一个程序,让鼠标跳转,只是为了娱乐目的:)但我希望用户能够在按下S键时停止鼠标
答案 0 :(得分:0)
while
循环通常比for
循环更适合您尝试完成的任务。假设您的类在循环之前将Spressed
设置为false,这里的代码是:
while (!Spressed) {
try {
Thread.sleep((int)(speed*1000));
(new Robot()).mouseMove((int)Math.abs(((r.nextInt())%(Toolkit.getDefaultToolkit().getScreenSize().getWidth())+1)),
(int)Math.abs(((r.nextInt())%(Toolkit.getDefaultToolkit().getScreenSize().getHeight())+1)));
} catch (InterruptedException | AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
System.out.println("S");
Spressed = false;
break;
此外,您应该关注Java variable naming conventions并将其称为sPressed
,而不是Spressed
。