我已尝试在我的视图类中安装一些keylisteners来终止此方法。但似乎方法不会停止。我不确定如何实际阻止它执行?在执行方法的整个过程中,按钮似乎都被按下了。
public void method1() {
try {
robot = new Robot();
Compare.captureScreen(800, 550, 200, 50);
if (Compare.processImage("image.png") == true) {
robot.mouseMove(890, 576);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
} else if (Compare.processImage("image.png") != true) {
if (Compare.file.exists()) {
Compare.file.delete();
}
robot.delay(2000);
method1();
}
} catch (Exception e) {
e.printStackTrace();
}
}
我尝试过这样的事情:
JButton btnNewButton = new JButton("method1");
btnNewButton.setFocusable(true);
btnNewButton.requestFocus();
btnNewButton.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
System.exit(0);
}
}
});
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
theModel.method1();
}
});
btnNewButton.setBounds(163, 113, 101, 23);
mainPanel.add(btnNewButton);
答案 0 :(得分:0)
您在Swing事件调度线程(EDT)上调用长时间运行的代码,完全占用线程并使Swing无响应。这里的解决方案是让你的长期代码在EDT和后台线程中运行关闭。