日期:2014-05-20  浏览次数:20816 次

请问如何实现按ESC键退出Java程序?
我写了一个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)
{
}



------最佳解决方案--------------------
引用:
谢谢大家帮忙,我按逸飞的代码试了一下,还是不行,不知道问题出在哪?

5L代码是用在GUI程序中的。  
------其他解决方案--------------------
我只会写GUI版的,控制台版的不会,试了1楼的方法也没有成功

import java.awt.*;
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);
}
});
}
}

------其他解决方案--------------------
试试给Form添加这个按钮事件
------其他解决方案--------------------
试试给Form添加这个按钮事件
------其他解决方案--------------------
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener(){
    .............
});

------其他解决方案--------------------
添加ESC事件监听
------其他解决方案--------------------
import java.awt.AWTEvent;
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){