使用java中的KeyEvent打破for循环

时间:2018-01-13 13:11:53

标签: java

如何在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键时停止鼠标

1 个答案:

答案 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