45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:怎么样为JFrame和JDialog等窗口部件添加缺省按钮响应Escape键盘事件?

怎么样为JFrame和JDialog等窗口部件添加缺省按钮响应Escape键盘事件?

2016-09-05 06:54:34 来源:www.45fan.com 【

怎么样为JFrame和JDialog等窗口部件添加缺省按钮响应Escape键盘事件?

JFrame和JDialog都实现了RootPaneContainer接口,可以通过取得RootPane来实现。

public class RootPaneHelper {

private RootPaneHelper() {
}

/**
*为RootPaneContainer组件设置缺省按钮,
*并添加Escape事件响应
*/
public static void decorate(RootPaneContainer rpc,JButton defaultButton,Action escapeListener){
JRootPane rp=rpc.getRootPane();
rp.setDefaultButton(defaultButton);

KeyStroke stroke = KeyStroke.getKeyStroke("ESCAPE");
InputMap inputMap = rp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(stroke, "ESCAPE");
rp.getActionMap().put("ESCAPE", escapeListener);
}

/**
*为RootPaneContainer组件设置缺省按钮,
*并添加Escape的默认事件响应:关闭窗口
*/
public static void decorate(final RootPaneContainer rpc,JButton defaultButton){

Action action = new AbstractAction() {
public void actionPerformed(ActionEvent actionEvent) {
((Component)rpc).setVisible(false);
}
};

decorate(rpc,defaultButton,action);

}

}
 

本文地址:http://www.45fan.com/a/question/72465.html
Tags: 窗口 JFrame JDialog
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部