[英]How to convert SWT events? Why does SWT notifyListeners method expects event type argument?
Why does org.eclipse.swt.widgets.Widget#notifyListeners(int, Event)
method expects separate event type argument? 为什么
org.eclipse.swt.widgets.Widget#notifyListeners(int, Event)
方法需要单独的事件类型参数? Isn't it contained inside Event
argument already? 它不是已经包含在
Event
参数中了吗? What if they do not coincide? 如果它们不一致,该怎么办?
May I resend the same event with another id? 我可以使用另一个ID重新发送同一事件吗?
Suppose I wish to send SWT.OpenDocument
in response to SWT.MouseDoubleClick
假设我希望发送
SWT.OpenDocument
作为对SWT.MouseDoubleClick
响应
public void handleEvent(Event event) {
if (event.type == SWT.MouseDoubleClick) {
notifyListeners(SWT.OpenDocument, event);
}
}
If you look at the source of Widget#notifyListeners(int, Event)
and follow the method calls to Widget#sendEvent(int, Event, boolean)
You can see the following: 如果您查看
Widget#notifyListeners(int, Event)
并遵循对Widget#sendEvent(int, Event, boolean)
的方法调用,则可以看到以下内容:
void sendEvent (int eventType, Event event, boolean send) {
if (eventTable == null && !display.filters (eventType)) {
return;
}
if (event == null) event = new Event ();
event.type = eventType;
event.display = display;
event.widget = this;
if (event.time == 0) {
event.time = display.getLastEventTime ();
}
if (send) {
sendEvent (event);
} else {
display.postEvent (event);
}
}
As you can see, the Event
is "filled" for you, so it's impossible to have interfering/contradictory event types. 如您所见,
Event
为您“填充”,因此不可能有干扰/矛盾的事件类型。
The event you specify in the method call of notifyListeners
will be used in any case. 在任何情况下,
notifyListeners
将使用您在notifyListeners
方法调用中指定的事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.