簡體   English   中英

如何轉換SWT事件? 為什么SWT notifyListeners方法需要事件類型參數?

[英]How to convert SWT events? Why does SWT notifyListeners method expects event type argument?

為什么org.eclipse.swt.widgets.Widget#notifyListeners(int, Event)方法需要單獨的事件類型參數? 它不是已經包含在Event參數中了嗎? 如果它們不一致,該怎么辦?

我可以使用另一個ID重新發送同一事件嗎?

假設我希望發送SWT.OpenDocument作為對SWT.MouseDoubleClick響應

public void handleEvent(Event event) {
    if (event.type == SWT.MouseDoubleClick) {

        notifyListeners(SWT.OpenDocument, event);

    }
}

如果您查看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);
    }
}

如您所見, Event為您“填充”,因此不可能有干擾/矛盾的事件類型。

在任何情況下, notifyListeners將使用您在notifyListeners方法調用中指定的事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM