Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java KeyListener应该工作,然后退出程序,但它没有';t(自动舔片机)_Java_System.exit - Fatal编程技术网

Java KeyListener应该工作,然后退出程序,但它没有';t(自动舔片机)

Java KeyListener应该工作,然后退出程序,但它没有';t(自动舔片机),java,system.exit,Java,System.exit,我制作了一个自动点击器,它工作得很好,但是我想添加一个KeyListener,这样使用它的人就可以停止自动点击器。它应该与按钮q一起工作,但它不能! 代码如下: Main.java: import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.util.*; public class Main{ private static Robot roboter = null; publ

我制作了一个自动点击器,它工作得很好,但是我想添加一个KeyListener,这样使用它的人就可以停止自动点击器。它应该与按钮q一起工作,但它不能! 代码如下: Main.java:

import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.util.*;

public class Main{
    private static Robot roboter = null;
    public static void main(String[]args){
        JFrame jf = new JFrame();
        jf.setSize(1920, 1080);
        jf.addKeyListener(new KeyHandler());
        jf.setLocationRelativeTo(null);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.requestFocus();
        Scanner SekAbstand = new Scanner(System.in);
        int SekundenAbstand;
        int EndlosSchleife = 1;
        System.out.println("Um das Programm zu stoppen druecke Q!!!");
        System.out.println("Wie lange soll der Abstand zwischen den Klicks
        sein(in Millisekunden)?");
        SekundenAbstand = SekAbstand.nextInt();
        System.out.println("Du hast 10 Sekunden um die Maus zur richtigen 
        Position zu bringen!");
        try {
            roboter = new Robot();
        } catch(AWTException e) {
            e.printStackTrace();
        }
        roboter.delay(10000);
        while(EndlosSchleife == 1) {
            roboter.delay(SekundenAbstand);
            roboter.mousePress(MouseEvent.BUTTON1_MASK);
            roboter.mouseRelease(MouseEvent.BUTTON1_MASK);
        }
    }
}
KeyHandler.java:

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class KeyHandler implements KeyListener {
    @Override
    public void keyTyped(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_Q){
            System.exit(0);
        }
    }

    @Override
    public void keyPressed(KeyEvent e) {

    }

    @Override
    public void keyReleased(KeyEvent e) {

    }
}

谢谢。

据我所知,KeyListener只有在应用程序上有焦点时才能工作(出于安全考虑)。要做到这一点,您需要使用Java本机接口,并将关键部分写入C/C++。昆仑的问题是我不能用C/C++编程,这意味着很难实现这一点,可能是不可能的。由于安全原因,Java不允许访问。如果有人认为我错了,请纠正我。据我所知,KeyListener只有在你的应用程序有焦点时才有效(为了安全)。要做到这一点,您需要使用Java本机接口,并将关键部分写入C/C++。昆仑的问题是我不能用C/C++编程,这意味着很难实现这一点,可能是不可能的。由于安全原因,Java不允许访问。如果有人认为我错了,请纠正我。