`
snoopy7713
  • 浏览: 1152586 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

SWT对话框系列:让对话框支撑方向键选择

    博客分类:
  • SWT
阅读更多

在SWT 3.3中弹出的对话框比如确认对话框,可以通过Tab键在对话框按钮之间来回选择,但是无法通过键盘方向键来选择,这就让Windows的爱好者很不习惯,其实我自己使用起来也不习惯。 <!--endfragment-->   其实让SWT的对话框支持方向键选择有好几种方案

 

<!--endfragment-->

  A方案:将平台迁移到Eclipse 3.4+,这个方法在SWT 3.4+中解决了

  B方案:可以自己实现这个功能!

  我们可以继承 org.eclipse.jface.dialogs.MessageDialog  这个类,比如就叫MessageDialog2,然后重写父类中的 createButtonsForButtonBar(Composite parent)  方法,比如可以参考我的实现方法:

 

protected   void  createButtonsForButtonBar(Composite parent) {
    
super .createButtonsForButtonBar(parent);
    
int  columns  =  ((GridLayout) parent.getLayout()).numColumns;
    
if (columns  <   2 )
      
return ;
    
for  ( int  i  =   0 ; i  <  columns; i ++ ) {
      Button button 
=  getButton(i);
      
int  index  =  (i  +   1   <  columns  ?  i  +   1  : i - 1 );
      
final  Button otherButton  =  getButton(index);
      button.addKeyListener(
new  KeyAdapter() {
        
public   void  keyPressed(KeyEvent e) {
          
if  (e.keyCode  ==  SWT.ARROW_RIGHT  ||  e.keyCode  ==  SWT.ARROW_LEFT) {
            otherButton.setFocus();
          }
        }
      });
    }
  }

 

   然后在MessageDialog2方法重写 openQuestion(Shell parent, String title, String message) 方法,

参考实现:      

  public   static   boolean  openQuestion(Shell parent, String title, String message,  boolean  defaultTrue) {
    MessageDialog2 dialog 
=   new  MessageDialog2(UIUtil.getActiveShell(), title,  null , message, QUESTION,  new  String[] {
        IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }, defaultTrue 
?   0  :  1 );
    
return  dialog.open()  ==   0 ;
  }

<!--endfragment-->

上面方法的defaultTrue是指焦点是否默认在"确认"按钮上面。
<!--endfragment--><!--endfragment--><!--endfragment--><!--endfragment-->

使用方法:

<!--endfragment-->

MessageDialog2.openQuestion(getShell(),”确认操作”,”是否要执行XX操作 ? ”, false );
分享到:
评论

相关推荐

    基于net的超市管理系统源代码(完整前后端+sqlserver+说明文档+LW).zip

    功能说明: 环境说明: 开发软件:VS 2017 (版本2017以上即可,不能低于2017) 数据库:SqlServer2008r2(数据库版本无限制,都可以导入) 开发模式:mvc。。。

    LABVIEW程序实例-公式节点.zip

    labview程序代码参考学习使用,希望对你有所帮助。

    大米商城开源版damishop(适合外贸)

    大米外贸商城系统 简称damishop 完全开源版,只需做一种语言一键开启全球133中语言自动翻译功能,价格实现自动汇率转换,集成微信支付宝 paypal以及国外主流支付方式,自带文章博客系统。 软件架构 基于MVC+语言包模式,增加控制台,API导入产品方便对接其他系统(带json示例数据)。 使用要求 PHP7.4+ MYSQL5.6+ REDIS(可选) 安装方法 composer install 打开安装向导安装 http://您的域名/install 特色 1、缓存层增加时间与批量like删除 2、API产品导入方便对接其他系统 3、增加控制台命令行,命令行生成语言翻译包 4、后台一键开启自动翻译模式,支持全球133中语言,由于google代理翻译需要收费,这个功能需要付费。 5、可选购物车与ajax修改购物车产品 6、一键结算checkout 7、增加网站前台自定义路由 方便seo 更新日志 v3.9.7 集成鱼码支付接口,方便个人站长即使收款到账使用 v3.9.3 更新内容 1:增加ueditor与旧编辑器切换 2:增加可视化布局插

    LABVIEW程序实例-通过全局变量接收数据.zip

    labview程序代码参考学习使用,希望对你有所帮助。

    LABVIEW程序实例-日历控件.zip

    labview程序代码参考学习使用,希望对你有所帮助。

    毕设和企业适用springboot人工智能客服系统类及旅游规划平台源码+论文+视频.zip

    毕设和企业适用springboot人工智能客服系统类及旅游规划平台源码+论文+视频

Global site tag (gtag.js) - Google Analytics