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

阅读更多

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

Eclipse提供了两种实现机制;

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

1.    SWT.CURSOR_WAIT 等待状态,鼠标的形状为漏斗状

2.    SWT.NONE 正常状态,鼠标的形状为正常箭头状

实例代码如下:

    tree.addMouseListener(new MouseAdapter() {          

       public void mouseUp(MouseEvent e) {                                       tree.setCursor(new Cursor(null,SWT.CURSOR_WAIT));

           //您的鼠标处理事件

           tree.setCursor(new Cursor(null,SWT.NONE));

                          }

                      });

           }

});

 

Action 的处理实例代码:

new Action(“添加”)

{  

    public void run(){

           tree.setCursor(new Cursor(null,SWT.CURSOR_WAIT));

           //您的鼠标处理事件

           tree.setCursor(new Cursor(null,SWT.NONE));

           }         

};

 

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

 

BusyIndicator.showWhile(Activator.getDefault().getWorkbench()

                           .getDisplay(), new Runnable() {

                       public void run() {

              

                         //逻辑处理代码

                        

                   });

 

实例代码如下:

tree.addMouseListener(new MouseAdapter() {

public void mouseUp(MouseEvent e) {

 

BusyIndicator.showWhile(Activator.getDefault().getWorkbench()

.getDisplay(), new Runnable() {

           public void run() {

              //逻辑处理代码      

                          }

                      });

                 

              }

           });

 

Action 处理代码:

    new Action(“添加”)

{  

    public void run(){

    BusyIndicator.showWhile(Activator.getDefault().getWorkbench()

     .getDisplay(), new Runnable() {

     public void run() {

           //您的鼠标处理事件             }

              });

           }         

};

 

 

写的不够完善,如果不对的地方可以与我联系。E-mail:[email protected]

你可能感兴趣的:(Eclipse)