我写了一个Java控制台小程序,运行后为连续运行,请问如何实现按ESC键结束程序?我尝试用键盘事件,好像不是随便一个对象就可以做事件源,我就选了个按钮,然后加上监听器,实现方法后,还是不能实现这个功能,不知道问题出在哪。我是初学,请各位老师帮忙,谢谢。
...
//加入事件源和监听
Button button=new button();
button.addKeyListener(this);
...
//实现键盘按下方法
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode==KeyEvent.VK_ESCAPE)
System.exit(0);
}
public void keyTyped(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
}
...
//加入事件源和监听
Button button=new button();
button.addKeyListener(this);
...
//实现键盘按下方法
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode==KeyEvent.VK_ESCAPE)
System.exit(0);
}
public void keyTyped(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
}
.............
});
import java.awt.event.*;
import javax.swing.*;public class TestFrame extends JFrame
{
public TestFrame()
{
addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent event)
{
if (event.getKeyCode() == KeyEvent.VK_ESCAPE)
{
System.exit(0);
}
}
});
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new TestFrame();
frame.setSize(400, 300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
}
}
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;public class Escape {
public static void main(final String[] args) {
java.awt.EventQueue.invokeLater(new Runnable(){
public void run(){
final JFrame frame = new JFrame("Example"); final Toolkit toolkit = Toolkit.getDefaultToolkit();
toolkit.addAWTEventListener(new AWTEventListener(){
@Override public void eventDispatched(AWTEvent e){
if (e.getID() == KeyEvent.KEY_PRESSED) {
KeyEvent evt = (KeyEvent) e;
if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
frame.dispose();
System.exit(0);
}
}
}
},AWTEvent.KEY_EVENT_MASK); frame.setPreferredSize(new Dimension(600,400));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);
}
});
}
}
import java.awt.AWTEvent;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;public class ESCPressedEvent { public static void main(String[] args) {
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener()
{
@Override
public void eventDispatched(AWTEvent e)
{
if (e.getID() == KeyEvent.KEY_PRESSED)
{ KeyEvent evt = (KeyEvent) e;
if (evt.getKeyCode() == KeyEvent.VK_ESCAPE)
{System.exit(0);}
}
}
},AWTEvent.KEY_EVENT_MASK);
for(int i=1;i>0;i++)
{
System.out.println(i+'\n');
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}