<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,则默认使用当前线程的当前Display;runnable就是封装了我们要执行的操作的对象。这个方法会执行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>
分享到:
相关推荐
这些事件虽然不是鼠标事件,但在网页开发中也非常重要,可以帮助开发者更好地控制页面的行为和状态。 #### 表单相关的事件 对于表单控件来说,还有一些特定的事件: - **onBlur**:当表单元素失去焦点时触发。 - ...
在Java编程中,处理鼠标事件是一项基础且重要的任务,它使得用户可以通过鼠标与应用程序进行交互。本篇文章将深入探讨如何在Java中实现鼠标事件监听,包括点击、移动和释放等行为,并通过一个简单的例子来说明。 ...
首先,我们需要了解Delphi中处理鼠标滚轮事件的基本原理。在Windows系统下,鼠标滚轮会产生WM_MOUSEWHEEL消息,Delphi可以通过消息处理机制来捕获并处理这个消息。在Delphi中,我们通常会重写控件的WndProc方法来...
鼠标键盘事件.txt"和"说明.txt"可能包含了课程的详细说明和代码示例,可以帮助你深入理解这些事件的使用。 总的来说,掌握Delphi中的鼠标键盘事件是构建用户友好、响应灵敏的图形用户界面的关键。通过理解和运用...
6. **onkeypress** 事件:同样在用户按下键盘按键时触发,但它更关注于字符的输入,尤其在非打印键(如回车、删除键)的处理上与`onkeydown`事件有所不同。 7. **onkeyup** 事件:当用户释放键盘按键时触发,通常与...
以下是关于键盘事件的详细说明: 键盘事件主要包括`KeyPress`、`KeyDown`和`KeyUp`。 1. `KeyPress`事件: - `KeyPress`事件会在用户按下并释放一个字符键时触发。它通过传递一个名为`KeyAscii`的参数,将按下键...
在这种模式下,事件源(通常是GUI组件,如按钮、文本框等)是被观察的对象,当它们的状态发生改变时,会触发事件。而事件监听器则是观察者,注册到事件源上,接收并处理这些事件。 Java AWT和Swing库提供了丰富的...
如果`bDragging`为True,说明正处于拖动状态。此时,我们需要计算出鼠标当前位置与初始点击位置的偏移量,然后将这个偏移量加到Label的原位置上,从而改变Label的位置。更新Label的位置可以通过调整其`Left`和`Top`...
// 处理鼠标拖拽事件 } @Override public void mouseMoved(MouseEvent event) { // 处理鼠标移动事件 } } ``` ### 总结 事件处理机制是Java GUI编程中不可或缺的一部分,它使得应用程序能够响应用户的交互...
本教程将聚焦于一个特定的应用场景:利用jQuery实现鼠标滑过图片时显示各种文字说明的特效。这个效果常用于网站中的图片展示,如产品介绍或画廊,可以提供用户友好的互动体验,帮助用户在不离开当前页面的情况下获取...
在LabVIEW编程环境中,光标随鼠标移动显示对应位置数据是一项常见的需求,特别是在进行数据分析、信号处理或界面交互设计时。这个"LabVIEW光标随鼠标移动显示对应位置数据.rar"压缩包文件很可能是包含了一个LabVIEW...
- 鼠标悬停事件:CSS可以设置`:hover`伪类来改变元素状态,但在这里,由于我们需要更复杂的交互效果,主要依赖JavaScript来处理。 3. **JavaScript事件处理**: - `mouseenter` 和 `mouseleave` 事件:这两个...
在UGUI中,实现鼠标悬停提示信息是一种常见的交互设计,可以提高用户体验,让用户更加直观地了解UI元素的功能或状态。 首先,要实现鼠标悬停提示信息,我们需要使用Unity中的`EventSystem`、`CanvasGroup`和`Text`...
在Delphi编程环境中,开发人员有时需要对鼠标的操作进行特殊控制,比如锁定鼠标、模拟鼠标点击、检测鼠标状态等。这些功能在制作各种类型的软件,尤其是游戏或交互式应用程序时非常常见。以下是对"Delphi锁定鼠标、...
HGE中的`hgeInput`组件可以帮助我们获取鼠标状态,包括当前位置、按键状态等。 2. **坐标系统**:在HGE中,游戏世界有自己的坐标系统。开发者需要将鼠标屏幕坐标转换为游戏内的坐标,以便判断鼠标是否位于按钮区域...
我们将特别关注如何在CGridListCtrlEx中添加鼠标响应事件以及处理按钮的情况,无论是有按钮还是无按钮的设置。 首先,让我们了解CGridListCtrlEx的基础。它是对标准MFC CListCtrl类的扩展,提供了更多的功能,如...
总之,记录鼠标移动轨迹是通过监听和处理鼠标事件,然后将这些事件的坐标信息存储起来实现的。不同的平台和环境有不同的实现方式,但核心思路是一致的:捕获事件,提取坐标,保存轨迹。理解这个过程对于进行相关开发...
标题“支持左右滚动且鼠标移动到图片上显示文字说明”所涉及的技术点主要集中在动态图片展示和鼠标悬停事件处理上。这两种技术在现代网页开发中非常常见,尤其在产品介绍、广告轮播或者图库展示等场景下。 首先,...
鼠标移入移出事件通常用于控制对象(如窗口、按钮、文本框等)在鼠标进入或离开时显示不同的状态。在这个例子中,开发者可能创建了一个窗口,当鼠标光标进入窗口区域,程序会执行预设的“鼠标移入”事件处理程序,而...
在IT行业的前端开发领域,鼠标事件的处理是创建交互式用户界面的重要组成部分。根据给定文件的标题“director常用代码--鼠标代码”以及描述中提到的“鼠标代码鼠标代码,经常应用代码很实用的”,我们可以深入探讨与...