前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java SWT:用SWTKeySupport方便进行组合键判断(如Ctrl+F11)

java SWT:用SWTKeySupport方便进行组合键判断(如Ctrl+F11)

作者头像
10km
发布2019-05-25 22:32:01
7520
发布2019-05-25 22:32:01
举报
文章被收录于专栏:10km的专栏10km的专栏

版权声明:本文为博主原创文章,转载请注明源地址。 https://cloud.tencent.com/developer/article/1433718

SWT下如果判断包含shfit,ctrl,alt的组合键,就要用到KeyEvent的stateMask字段。

关于stateMask的用法,参见我的上一篇博客《java SWT:MouseEvent,KeyEvent中stateMask字段的用法》

比如我们要用Ctrl-F11来实现全屏和正常屏幕显示的切换,直接使用stateMask字段判断的代码可以写成这样:

代码语言:javascript
复制
    /**
     * 屏幕为全屏状态时为true
     */
    private boolean fullScreen=false;
    private final KeyListener keyListener=new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if((e.stateMask & SWT.MODIFIER_MASK)==SWT.CTRL&&e.keyCode==SWT.F11){
                fullScreen=!fullScreen;
                shell.setFullScreen(fullScreen);
                shell.setMaximized(fullScreen);
            }
        }
    };

如果经常要写这种代码就有点烦而且容易出错,其实SWT已经提供了方便的方法供调用。

org.eclipse.jface.bindings.keys.SWTKeySupport中提供了一些方便的方法用于将stateMask和keyCode字段组合起来返回一个int值方便进行判断。使用SWTKeySupport.convertEventToUnmodifiedAccelerator上面的代码可以改成这样:

代码语言:javascript
复制
    /**
     * 屏幕为全屏状态时为true
     */
    private boolean fullScreen=false;
    private final KeyListener keyListener=new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if(SWTKeySupport.convertEventToUnmodifiedAccelerator(e)==(SWT.CTRL|SWT.F11)){
                fullScreen=!fullScreen;
                shell.setFullScreen(fullScreen);
                shell.setMaximized(fullScreen);
            }
        }
    };

convertEventToUnmodifiedAccelerator方法将stateMask和keyCode的值组合成一个整数值返回 比如”Ctrl+Shift+5” 返回 Ctrl和%的组合. (SWT.CTRL|’%’) 比如”Ctrl+F11” 返回 值为(SWT.CTRL|SWT.F11) 关于SWTKeySupport.convertEventToUnmodifiedAccelerator方法的原文说明参见:《Class SWTKeySupport》 http://help.eclipse.org/neon/nftopic/org.eclipse.platform.doc.isv/reference/api/index.html

再比如,如果判断Ctrl+5,

则写为SWTKeySupport.convertEventToUnmodifiedAccelerator(e)==(SWT.CTRL|'5')

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年12月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档