如何在 Eclipse 插件 + RCP 中获取用户点击的 x 和 y 位置
How to get x and y position of user click in Eclipse plugin + RCP
我正在使用 Eclipse 使用 JFace + RCP 为电子邮件客户端开发一个插件。我没有使用 eclipse 开发任何屏幕,邮件客户端将是这个插件的屏幕。
我想获取客户端中用户点击的位置
您可以使用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使用了很多本地代码,这行不通,我不知道现在是否仍然如此。
我正在使用 Eclipse 使用 JFace + RCP 为电子邮件客户端开发一个插件。我没有使用 eclipse 开发任何屏幕,邮件客户端将是这个插件的屏幕。
我想获取客户端中用户点击的位置
您可以使用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使用了很多本地代码,这行不通,我不知道现在是否仍然如此。