atitit.窗口静听esc退出本窗口java swing c# .net php
atitit.窗口静听esc退出本窗口java swing c# .net php
1. 监听esc 按键
1.1. 监听一个组件
1.2. 监听加在form上
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
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);
Java code
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener(){
.............
});
这个办法最好。监听了全部事件。无论是在哪个componet上。button,form等..
这个不起作用,可能focus到个一个组件上栏。。三,这个only不个事件捆绑到个frm上兰..
// frame.addKeyListener(new KeyAdapter() {
// @Override
// public void keyPressed(KeyEvent e) {
// if (KeyEvent.VK_ESCAPE == e.getKeyCode()) {
// // System.exit(0);
// System.out.println("---colose...");
// frame.dispose();
// }
// }
// });
2. 关闭窗口
仅仅要在每一个Frame里设定this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);就可以。
EXIT_ON_CLOSE。关闭程序。
(全部窗体和进程都会关闭)
DISPOSE_ON_CLOSE,仅仅关闭本窗体。
HIDE_ON_CLOSE,仅仅隐藏本窗体,不关闭。
DO_NOTHING_ON_CLOSE,不做不论什么事,点击关闭无效。
这非常easy。仅仅要调用dispose方法就可以。隐藏是setVisible(false)。
关闭程序是System.exit(0);
frame.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
frame.dispose();
// System.exit(0);
}
參考
java怎么样通过button关闭一个JFrame_百度知道.htm