在过去的三天里,我花了两个小时进行研究,但无法弄清楚这一点。
这是一个简单的程序,每2.5秒点击鼠标左键50次,然后程序结束。但有时我想通过按退出键(而不是鼠标)来尽快结束程序。
如何通过单击退出按钮结束程序?我不知道我做错了什么。如果可能请提供代码,因为我是Java的新手,并且不了解Java术语。谢谢你的帮助。
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class TestClass implements KeyListener, ActionListener
{
static boolean exit = false;
public static void main(String[] args) throws AWTException
{
//Creates robot class
Robot r = new Robot();
for(int x = 1; x < 50; x++)
{
//moves mouse to a cretain point on the screen
r.mouseMove(789, 326);
//robot class presses the mouse then realases every 2.5 Seconds
r.mousePress(InputEvent.BUTTON1_MASK);
r.mouseRelease(InputEvent.BUTTON1_MASK);
r.delay(2500);
System.out.println("This the " + x + "th time.");
}
}
//KeyLisener stuff
@Override
public void keyPressed(KeyEvent e)
{
// TODO Auto-generated method stub
if(e.getKeyCode() == KeyEvent.VK_ESCAPE)
{
System.out.println("The key has been pressed");
System.exit(0);
}
}
@Override
public void keyReleased(KeyEvent e){}
@Override
public void keyTyped(KeyEvent e){}
// Action Performed stuff
@Override
public void actionPerformed(ActionEvent arg0)
{
// TODO Auto-generated method stub
if (exit = true)
{
System.exit(0);
}
}
}
答案 0 :(得分:1)
KeyListener需要监听一个Swing或AWT GUI组件,该组件在具有焦点的GUI中具有焦点,这对于您的情况并非如此。换句话说,KeyListener根本就不能在这里使用。
当您的程序不是GUI或者没有焦点的GUI时,这不是简单的Java任务。一种解决方案是使用JNI或JNA来获取系统键盘钩子,如果您不熟悉操作系统的系统编程,这可能会很棘手。
我在Windows环境中的解决方案通常涉及使用AutoIt或AutoHotKey等实用程序,然后通过套接字将小型实用程序与我的Java程序绑定。所有解决方案都将针对特定平台。
例如,解决类似问题的代码,请参阅我对类似stackoverflow问题here的回答。
答案 1 :(得分:0)
仅对于仍在寻找它的人-我关闭程序的方法非常非常简单:
if(e.getKeyCode() == KeyEvent.VK_ESCAPE) {
System.exit(1);
}
希望这会有所帮助。