如何在按下一个键时停止自动点击器

fkvaft9z  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(784)
@Override
    public void keyPressed(KeyEvent e) {

        if ( e.getKeyChar() == 'x' ) {
            Clicking = true;
        }
            try {
                if(Clicking == true)
                robot = new Robot();
                while (true) {
                    robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robot.delay(1000);
                    robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                    if(e.getKeyChar() == 'b'){
                        Clicking = false;
                    }
                } } catch(AWTException awtException) {
                awtException.printStackTrace();

               }
            }

我试图使它,所以每当我按下b自动舔停止它的工作时,我按x,但不停止后,我按b

w6lpcovy

w6lpcovy1#

你在核心上使用这个机制,但我不认为它不好,尽管把它分配给run\u it和stop\u it这样的方法怎么样?或者,只需执行点击操作(这会更简单)。
“我试图使它,所以每当我按下b自动舔停止工作时,我按x,但不停止后,我按b”。
我真的看不出它有什么意义,试着用逗号,这样社区就无法理解了。
请展示更多关于这个项目的信息,点击是从哪里来的?

pjngdqdw

pjngdqdw2#

你需要另一个线程来听你的“b”的点击。因为它在当前线程上运行,所以它会阻止侦听输入。
像这样的想法:

if(e.getKeyChar() == 'x' ) {
   if(robot == null) {
      robot = new Robot(someObjectIWantToBringOver);
      Thread thread = new Thread(robot);
      thread.start();
   }
 }
 if(e.getKeyChar() == 'b' ) {
    if(robot != null) {
       robot.stop();
       robot = null;
    }
 }

//在你的机器人课上

class Robot implements Runnable {
    private volatile boolean running = true;
    private final Object xyz;

    public Robot(Object abc??) {
      this.xyz = abc;
    }
 ...
    public void run() {
       while(running) {
          try{
            xyz.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            Thread.sleep(1000);
            xyz.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
          }catch(Exception e) {}
       }
   }

   public void stop() {
       running = false;
   }
 }

看起来是个有趣的项目。玩得高兴!

相关问题