Dialog里监听ESC按键事件
2012-06-21 07:04
465 查看
一个JDialog,焦点在任何控件上的时候,当ESC按键或其他键事件发生时,想关闭这个窗口,或者激活别的事件的方法。在直接用JDialog时,用addKeyListener方法添加对键盘事件的监听,发现现不能监听到ESC事件。这里继承JDialog 覆盖父类的createRootPane()方法,添加对键盘ESC的监听。当然也可以实现对其他键盘的监听。
示例代码如下:
示例代码如下:
package com.michaelx.swing.dlg; import java.awt.Dialog; import java.awt.Dimension; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JRootPane; import javax.swing.KeyStroke; /** *@author mengke *@email wqjsir@foxmail.com *@version 1.0 *@date 2011-10-22 上午12:23:36 *@project myswing */ public class EscapeDialog extends JDialog { private static final long serialVersionUID = 1L; public EscapeDialog(Dialog d){ super(d); } public EscapeDialog(Window w){ super(w); } /** * 覆盖父类的方法。实现自己的添加了ESCAPE键监听 */ @Override protected JRootPane createRootPane(){ KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0); JRootPane rootPane = new JRootPane(); rootPane.registerKeyboardAction(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { escapeKeyProc(); } },stroke, JComponent.WHEN_IN_FOCUSED_WINDOW); return rootPane; } /** * 处理ESCAPE按键。子类可以重新覆盖该方法,实现自己的处理方式。 */ protected void escapeKeyProc(){ setVisible(false); } public static void main(String[] args){ EscapeDialog dlg = new EscapeDialog(null); dlg.setSize(new Dimension(200,300)); dlg.setVisible(true); } }
相关文章推荐
- Dialog里监听ESC按键事件
- android dialog 原来dialog对话框也有自己的按键监听事件 onKeyDown方法
- DialogFragment 监听按键事件的方法(onkeydown)
- 安卓开发最简单的按键监听事件
- Android:各种Dialog创建及其监听事件实现
- 【Android SDK开发】各种Android Dialog创建及其监听事件实现
- Android通过Intent.ACTION_CLOSE_SYSTEM_DIALOGS监听Home按键事件
- 事件监听机制——列出指定目录内容、添加Dialog对话框
- Android如何监听蓝牙耳机的按键事件
- Android 中 弹出 Dialog 后监听 Back键 点击事件
- android按键监听事件
- Android如何监听蓝牙耳机的按键事件(转)
- 各种Android Dialog创建及其监听事件实现
- Android学习按键事件监听与Command模式
- SWT/JFace 按键、事件、监听
- 关于dialog对话框中按键的点击事件选择
- 各种Android Dialog创建及其监听事件实现
- 事件监听机制——列出指定目录内容、添加Dialog对话框
- 耳机按键事件的监听
- Dialog的相关监听事件