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

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

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

/** * 屏幕为全屏状态时为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上面的代码可以改成这样:

/** * 屏幕为全屏状态时为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')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值