지난 3 일간 연구에 2 시간을 보냈는데 그 사실을 알 수 없습니다.이스케이프 버튼을 눌러 프로그램을 종료하는 방법은 무엇입니까?
이것은 마우스 왼쪽 버튼을 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);
}
}
}
키 수신기는 별도의 스레드에 있어야합니다. – redFIVE
@redFIVE : 스레드와 관련이 거의 없습니다. KeyListener는 포커스가있는 GUI에 포커스를 둔 Swing 또는 AWT GUI 컴퍼넌트를 청취 할 필요가 있습니다. 원래의 포스터의 질문에는 맞지 않습니다. 즉, KeyListener는 여기서 간단하게 사용할 수 없습니다. –