gpt4 book ai didi

Java - 'Kill' 机器人正在运行

转载 作者:行者123 更新时间:2023-12-02 05:50:53 24 4
gpt4 key购买 nike

我有一个 JFrame,上面有一个启动循环的按钮。循环使机器人单击我的屏幕等...在 JFrame 上,为什么当按下“x”按钮时,程序不会终止?该按钮绝对不执行任何操作。我已经删除了所有不相关的代码。这控制机器人:

package nova;

public class Run {
public static void main(String[] args) throws Exception {
while (true) {
// move
Thread.sleep(Number.random(350, 650));
// click
Control.getPos();
Thread.sleep(Number.random(120, 340));
// move
// click
Control.getPos();
Thread.sleep(Number.random(800, 1000));
// space bar
Thread.sleep(Number.random(11500, 12900));
// move
// click
Control.getPos();
Thread.sleep(Number.random(120, 340));
// move
// click
Control.getPos();
Thread.sleep(Number.random(800, 1000));
// space bar
Thread.sleep(Number.random(11500, 12900));
}
}

}

这是 JFrame:

package nova;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;

public class Main extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;

public Main() {
/*
* JFrame.
*/
setSize(600, 600);// Size of JFrame
setVisible(true);// Sets if its visible.
/*
* JButton.
*/
JButton startButton = new JButton("Start");// The JButton name.
add(startButton);// Add the button to the JFrame.
startButton.addActionListener(this);// Reads the action.
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
onExit();
}
});

}

private void onExit() {
System.exit(0);
}

/*
* The main method.
*/
public static void main(String[] args) {
new Main();// Reads method main()
}

/*
* What the button does.
*/
public void actionPerformed(ActionEvent e) {
// does this when the button is pressed
try {
Run.main(null);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}

我完全困惑为什么程序没有终止和关闭。怎么解决这个问题?

最佳答案

机器人不是 GUI 的一部分。它不在事件调度线程上执行,因此关闭 GUI 对其没有影响。

How this be resolved?

windowClosing(...) 方法中添加逻辑以停止机器人。因此,您需要以某种方式重组代码以摆脱 while (true) 循环。

也许您可以创建一个 ArrayList 来跟踪您想要生成的所有事件。然后您可以使用计时器来调用每个事件。然后在 windowClosing() 代码中停止计时器。

关于Java - 'Kill' 机器人正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com