如何在SWT中使鼠标的状态变成忙碌
来源:互联网 发布:angularjs json 编辑:程序博客网 时间:2024/04/29 04:52
Platform: Eclipse 3.2
Eclipse Plug-in开发离不开与用户的交互,我们往往把用户的鼠标点击之类动作所调用的代码包装成一个Action。例如,如果用户点击了一个Menu Item,那么绑定到这个Menu Item上的Action就会运行,这一切都很直观。但是有的时候,用户触发的操作可能需要很长时间才能完成,比如连接数据库,在这种情况下,就必须把鼠标的状态改为忙碌,这样就可以用沙漏手势提示用户当前操作正在进行,也避免了用户在等待当前操作的时候又去触发其他的操作。那么如何实现这一点呢?Eclipse有一个High-level的实现,也有一个Low-level的实现。因为后者非常简单,而且在大多数情况下也能满足需求,所以这里会介绍后者。
我们可以在org.eclipse.swt.custom包中找到一个BusyIndicator类,它的Java Doc说得好:Support for showing a Busy Cursor during a long running process。该类只有一个static的方法,让我们来看看它的签名:
其中,display参数指定了Busy Cursor应该显示在哪里,如果传入null,则默认使用当前线程的当前Display;runnable就是封装了我们要执行的操作的对象。这个方法会执行runnable中的操作,同时显示Busy Cursor,当runnable结束后,鼠标的状态就会恢复为正常。OK,让我们来看一个例子:
怎么样,是不是很简单呢?
Eclipse Plug-in开发离不开与用户的交互,我们往往把用户的鼠标点击之类动作所调用的代码包装成一个Action。例如,如果用户点击了一个Menu Item,那么绑定到这个Menu Item上的Action就会运行,这一切都很直观。但是有的时候,用户触发的操作可能需要很长时间才能完成,比如连接数据库,在这种情况下,就必须把鼠标的状态改为忙碌,这样就可以用沙漏手势提示用户当前操作正在进行,也避免了用户在等待当前操作的时候又去触发其他的操作。那么如何实现这一点呢?Eclipse有一个High-level的实现,也有一个Low-level的实现。因为后者非常简单,而且在大多数情况下也能满足需求,所以这里会介绍后者。
我们可以在org.eclipse.swt.custom包中找到一个BusyIndicator类,它的Java Doc说得好:Support for showing a Busy Cursor during a long running process。该类只有一个static的方法,让我们来看看它的签名:
public static void showWhile(Display display, Runnable runnable)
其中,display参数指定了Busy Cursor应该显示在哪里,如果传入null,则默认使用当前线程的当前Display;runnable就是封装了我们要执行的操作的对象。这个方法会执行runnable中的操作,同时显示Busy Cursor,当runnable结束后,鼠标的状态就会恢复为正常。OK,让我们来看一个例子:
public class DoubleClickTreeNodeAction extends Action {
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.action.Action#run()
*/
public void run() {
// get Display from your own plug-in
BusyIndicator.showWhile(Activator.getDefault().getWorkbench()
.getDisplay(), new Runnable() {
public void run() {
performAction();
}
});
}
private void performAction() {
// connecting to database...
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.action.Action#run()
*/
public void run() {
// get Display from your own plug-in
BusyIndicator.showWhile(Activator.getDefault().getWorkbench()
.getDisplay(), new Runnable() {
public void run() {
performAction();
}
});
}
private void performAction() {
// connecting to database...
}
}
怎么样,是不是很简单呢?
- 如何在SWT中使鼠标的状态变成忙碌
- 如何在SWT中使鼠标的状态变成忙碌
- 如何在SWT中使鼠标的状态变成忙碌
- 如何在SWT中使鼠标的状态变成忙碌
- 改变鼠标的状态,显示为忙碌
- 设置鼠标忙碌状态
- 在SWT中,如何区别鼠标单双击
- 忙碌的状态
- 在SWT中拖放和鼠标事件检测存在矛盾
- win7旗舰版在桌面空白处点击鼠标右键,就变成了圆圈了,一直处于等待的状态!
- 如何在应用程序忙碌时探测用户的按健
- 如何在eclipse中查看SWT源码
- 如何在eclipse中使用SWT
- 在MFC中,想要实现当鼠标移动到某个标签中的时候鼠标变成超链接时候的“手”状
- C#系列——实现鼠标忙碌状态
- 当鼠标放在图片或文字上,如何让鼠标箭头变成小手
- 在Swing中嵌入SWT的组件
- 如何在Eclispe中,正确导入自带的SWT包
- sidi
- 怎样作一个真正合格的程序员?
- Oracle9i中数据仓库的增强及其价值
- 记录
- 开始画板之路
- 如何在SWT中使鼠标的状态变成忙碌
- STL设计思想之Traits技术
- Oracle锁简单介绍
- very good
- STL设计思想之内存管理
- C语言 文字输出输入
- C# 泛型介绍 ----微软webcast
- 单文档应用程序SDI的视图切换
- 简易日期控件制作