首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请教怎么实现按ESC键退出Java程序

2012-12-18 
请问如何实现按ESC键退出Java程序?我写了一个Java控制台小程序,运行后为连续运行,请问如何实现按ESC键结束

请问如何实现按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){


                                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);
                }
            });
    }
}


[其他解释]
很简单,你的new button()错了,是new Button(),非常不细心啊LZ
[其他解释]
引用:
Java code
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener(){
    .............
});

这个办法最好。监听了所有事件。不管是在哪个componet上,button,form等..
[其他解释]
谢谢大家帮忙,我按逸飞的代码试了一下,还是不行,不知道问题出在哪?
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();
}
}
}
}


[其他解释]
系统监听,你要想在命令行里用么? 关闭dos窗口?
[其他解释]
谢谢大家,Form添加按钮事件也没有试,等不忙的时候我会再试试。

热点排行