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

<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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值