【发布时间】:2018-02-19 08:42:24
【问题描述】:
我正在为使用 Eclipse 的 JFace + RCP 开发电子邮件客户端插件。我没有使用 eclipse 开发任何屏幕,邮件客户端将是这个插件的屏幕。
我想获取用户在客户端点击的位置。
【问题讨论】:
标签: java eclipse eclipse-rcp jface rcp
我正在为使用 Eclipse 的 JFace + RCP 开发电子邮件客户端插件。我没有使用 eclipse 开发任何屏幕,邮件客户端将是这个插件的屏幕。
我想获取用户在客户端点击的位置。
【问题讨论】:
标签: java eclipse eclipse-rcp jface rcp
您可以使用Display 的addFilter 方法在SWT 代码中添加一个为所有鼠标按下事件调用的侦听器:
Display display = Display.getDefault();
display.addFilter(SWT.MouseDown, new Listener()
{
@Override
public void handleEvent(Event event)
{
System.out.println("event " + event);
if (event.widget instanceof Control) {
Control control = (Control)event.widget;
System.out.println("display " + control.toDisplay(event.x, event.y));
}
}
});
传递给handleEvent 的Event 具有用于鼠标按下事件的x 和y 字段——这些字段与包含该事件的控件相关。控制在widget 字段中给出。我已经展示了将这些值转换为绝对显示值的代码。
注意:这仅适用于当前应用程序中的鼠标按下事件,并且仅适用于 SWT 代码。过去 Lotus Notes 使用了很多本机代码,但这是行不通的,我不知道是否仍然如此。
【讨论】:
IWorkbenchWindowActionDelegate 的ActionSetHandler 类中进行了尝试,但出现了一些错误。我更新了我的问题,请看一下。
Event 导入错误。必须是org.eclipse.swt.widgets.Event