`
cary
  • 浏览: 84289 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

关于事件处理时鼠标状态的说明

    博客分类:
  • J2EE
阅读更多

<o:p></o:p>

Eclipse Plug-in开发离不开与用户的交互,我们往往把用户的鼠标点击之类动作,例如,如果用户点击了一个Menu Item,那么绑定到这个Menu Item上的Action就会运行,这一切都很直观。但是有的时候,用户触发的操作可能需要很长时间才能完成,比如连接数据库,在这种情况下,就必须把鼠标的状态改为忙碌,这样就可以用沙漏手势提示用户当前操作正在进行,也避免了用户在等待当前操作的时候又去触发其他的操作。那么如何实现这一点呢?<o:p></o:p>

Eclipse提供了两种实现机制;<o:p></o:p>

()通过在您的处理事件中设置鼠标形状来完成预期结果,其对应的包为org.eclipse.swt.graphics.Cursor;提供的鼠标状态有很多种,我们通常只使用两种:<o:p></o:p>

1.    SWT.CURSOR_WAIT 等待状态,鼠标的形状为漏斗状<o:p></o:p>

2.    SWT.NONE 正常状态,鼠标的形状为正常箭头状<o:p></o:p>

实例代码如下:<o:p></o:p>

    tree.addMouseListener(new MouseAdapter() {           <o:p></o:p>

       public void mouseUp(MouseEvent e) {                                       tree.setCursor(new Cursor(null,SWT.CURSOR_WAIT));<o:p></o:p>

           //您的鼠标处理事件<o:p></o:p>

           tree.setCursor(new Cursor(null,SWT.NONE));<o:p></o:p>

                          }<o:p></o:p>

                      });<o:p></o:p>

           }<o:p></o:p>

});<o:p></o:p>

<o:p> </o:p>

Action 的处理实例代码:<o:p></o:p>

new Action(“添加”)<o:p></o:p>

{   <o:p></o:p>

    public void run(){<o:p></o:p>

           tree.setCursor(new Cursor(null,SWT.CURSOR_WAIT));<o:p></o:p>

           //您的鼠标处理事件<o:p></o:p>

           tree.setCursor(new Cursor(null,SWT.NONE));<o:p></o:p>

           }          <o:p></o:p>

};<o:p></o:p>

<o:p> </o:p>

(二)通过org.eclipse.swt.custom.BusyIndicator提供的一个方法来设置事件处理时的鼠标状态。其方法为:public static void showWhile(Display display, Runnable runnable) 其中,display参数指定了Busy Cursor应该显示在哪里,如果传入null,则默认使用当前线程的当前Displayrunnable就是封装了我们要执行的操作的对象。这个方法会执行runnable中的操作,同时显示Busy Cursor,当runnable结束后,鼠标的状态就会恢复为正常。<o:p></o:p>

<o:p> </o:p>

BusyIndicator.showWhile(Activator.getDefault().getWorkbench()<o:p></o:p>

                           .getDisplay(), new Runnable() {<o:p></o:p>

                       public void run() {<o:p></o:p>

               <o:p></o:p>

                         //逻辑处理代码<o:p></o:p>

                         <o:p></o:p>

                   });<o:p></o:p>

<o:p> </o:p>

实例代码如下:<o:p></o:p>

tree.addMouseListener(new MouseAdapter() {<o:p></o:p>

public void mouseUp(MouseEvent e) {<o:p></o:p>

<o:p> </o:p>

BusyIndicator.showWhile(Activator.getDefault().getWorkbench()<o:p></o:p>

.getDisplay(), new Runnable() {<o:p></o:p>

           public void run() {<o:p></o:p>

              //逻辑处理代码       <o:p></o:p>

                          }<o:p></o:p>

                      });<o:p></o:p>

                  <o:p></o:p>

              }<o:p></o:p>

           });<o:p></o:p>

<o:p> </o:p>

Action 处理代码:<o:p></o:p>

    new Action(“添加”)<o:p></o:p>

{   <o:p></o:p>

    public void run(){<o:p></o:p>

    BusyIndicator.showWhile(Activator.getDefault().getWorkbench()<o:p></o:p>

     .getDisplay(), new Runnable() {<o:p></o:p>

     public void run() {<o:p></o:p>

           //您的鼠标处理事件             }<o:p></o:p>

              });<o:p></o:p>

           }          <o:p></o:p>

};<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

写的不够完善,如果不对的地方可以与我联系。E-mail:cary@dsrcom.com<o:p></o:p>

分享到:
评论

相关推荐

    自动化控制、事件触发机制研究

    可以将处理任务的类作为消息的发送者,任务开始时,发出“TaskStart”事件,任务进行中的不同时刻发出“TaskDoing”事件,并且携带参数说明任务进行的比例,任务结束的时候发出“TaskDone”事件,在画面中接收并且...

    鼠标Hook可视化的控件

    CAPTURECHANGED我处理了如上的鼠标事件,注意其中有几个事件我在测试时发现无法Hook,它们为WM_MBUTTONDBLCLK,WM_NCMBUTTONDBLCLK,WM_MOUSEACTIVATE,WM_NCHITTEST,WM_CAPTURECHANGED建议:不要将HookedExeName:=...

    setCapture和releaseCapture的小应用

    onclick事件中写了一个alert命令,这时,你点击的关闭按钮,它也一样会弹出alert窗口.releaseCapture与 setCapture方法相反,释放鼠标监控. 利用这个特性,我们可以延缓IE的关闭窗口等破坏性操作,将一些重要的操作...

    围棋的控件

    主要的编程接口全在这个事件  注意,当你处理鼠标事件时,整个棋谱已经完成更新和显示等一切工作或因为错误或限制没有对棋谱进行处理,  你可以对比单击鼠标前的Record_Finger属性得到棋谱是否改变(也就是...

    易语言程序免安装版下载

    注意:静态编译后的易语言EXE和DLL之间不能再共享“某些”句柄或资源,这一点和原动态连接时的程序行为不能保持一致,使用时请务必设法避免此类用法(MYSQL支持库我们作了特别处理)。 注意:静态编译后常量数据...

    javascript完全学习手册2 源码

    13.3.2 触发onError事件处理异常 13.3.3 使用trycatch语句处理异常 13.3.4 Error对象 13.3.5 使用throw语句 13.4 JavaScript调试技法 13.4.1 使用alen()语句 13.4.2 使用write()语句 13.4.3 抛出...

    JavaScript基础教程第8版

    8.2 处理鼠标事件 158 8.2.1 onmousedown事件 158 8.2.2 onmouseup事件 161 8.2.3 onmousemove事件 161 8.2.4 onmouseover事件 163 8.2.5 onmouseout事件 163 8.2.6 ondblclick事件 164 8.2.7 ...

    [计算机毕设]基于java的连连看游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库).zip

    项目说明报告 基于Java的连连看游戏设计与实现 ...本系统主要是运用Swing组件和事件处理技术,进行界面的绘制,鼠标的操作,以及积分的显示和沙漏的计时的显示等功能。 :游戏;连连看;二维游戏 

    javascript完全学习手册1 源码

    13.3.2 触发onError事件处理异常 375 13.3.3 使用try...catch语句处理 异常 377 13.3.4 Error对象 379 13.3.5 使用throw语句 380 13.4 JavaScript调试技巧 381 13.4.1 使用alert()语句 382 13.4.2 使用write()语句 ...

    PBhelper/PBCOMMENT 支持PB11.5,带源码,说明书等,版权归李群巍所有

    Ctrl键时是增加状态下注释,按住Shift键时是删除状态下注释。 4、建议使用应用进行参数设置,不直接修改pbhelper.ini 5、PBHelper不需要卸载老的版本,但下载新的安装包后需重新做集成到PB的操作。

    GTK+2.0 中文版(基于GNOME官方文档翻译)

    高级事件和信号处理 信号函数 连接和断开信号处理函数 阻塞和反阻塞信号处理函数 发出和停止信号 信号的发射和传播 操作选中区 概述 获取选中区信息 提供选中区 拖放 概述 属性 函数 设置...

    GTK+2.0中文教程 html格式

    中文版说明 简介 从这里开始 用 GTK 来写 Hello World 编译 Hello World 程序 信号和回调函数的原理 事件 Hello World 详解 继续 数据类型 深入探索信号处理函数 改进了的 Hello World 组装构件 组装...

    VC++常用功能实例

    问:如何增加视图中ActiveX控件的事件处理函数? 75 问:如何创建一个动态的Tree控件? 75 问:SDI程序开始时不打开文档? 75 问:List控件中整栏选择? 75 问:如何重载MRU文件? 76 问:CImageList控件中图象橙色被显示...

    VC++常用的共用函数100多页

    问:如何增加视图中ActiveX控件的事件处理函数? 75 问:如何创建一个动态的Tree控件? 75 问:SDI程序开始时不打开文档? 75 问:List控件中整栏选择? 75 问:如何重载MRU文件? 76 问:CImageList控件中图象橙色被显示...

    DBX260中文说明书

    DBX260中文说明书,DBX260的使用(一) 1.1 后面板连接(260) IEC电源线插座 260采用电压范围为100V-240V,频率为50-60Hz的国际性电源来供电,它使用的是IEC电缆线。 MIDI输入,MIDI输出和转接接口 这些接口为260 ...

    圈圈教你玩USB

    5.6.7对设备状态改变事件的处理 5.7软件界面以及使用方法 5.8本章小结 第6章USB转串口 6.1串口家族历史 6.2串口接头的引脚分布及功能 6.3USB转串口的实现方法 6.4设备描述符 6.5字符串描述符 …… 第7章USBMIDI键盘 ...

    VC++ 专家指导.doc

    (21)如何增加视图中ActiveX控件的事件处理函数? 101 (22)如何创建一个动态的Tree控件? 102 (23)SDI程序开始时不打开文档? 102 (24)List控件中整栏选择? 103 (25)如何重载MRU文件? 104 (26)CImageList控件中图象橙色...

    AXURE9最新版,小版本号3646,序列号可用(win版本)

    11. 元件增加悬停样式效果,鼠标悬停时,元件周围显示边框线。 12. 优化元件选中效果。 13. 编辑动态面板和中继器时,减少了页面标签的数量,优化编辑体验,新增隔离功能。 14. 文本字符的行距和间距的调整更加精确...

    BIOS中英文对照表

    说明 每个主板都不一样 Time/System Time 时间/系统时间 Date/System Date 日期/系统日期 Level 2 Cache 二级缓存 System Memory 系统内存 Video Controller 视频控制器 Panel Type 液晶屏型号 Audio ...

Global site tag (gtag.js) - Google Analytics