如果我錯過了實例,如何從SWT中刪除所有聽衆StyledText
?我試圖使用StyledText.getListeners(int)
方法獲取所有實例,之後可以將其刪除。但是,找到所有必需的int值很耗盡。這是最簡單的方法嗎?謝謝!SWT從StyledText中刪除所有聽衆
這裏是我的臨時解決方案:
public void removeAllListener(StyledText st) {
int[] eventTypes = { 3007, 3011, SWT.Resize, SWT.Move, SWT.Dispose,
SWT.DragDetect, 3000, SWT.FocusIn, SWT.FocusOut, SWT.Gesture,
SWT.Help, SWT.KeyUp, SWT.KeyDown, 3001, 3002, SWT.MenuDetect,
SWT.Modify, SWT.MouseDown, SWT.MouseUp, SWT.MouseDoubleClick,
SWT.MouseMove, SWT.MouseEnter, SWT.MouseExit, SWT.MouseHover,
SWT.MouseWheel, SWT.Paint, 3008, SWT.Selection, SWT.Touch,
SWT.Traverse, 3005, SWT.Verify, 3009, 3010 };
for (int eventType : eventTypes) {
Listener[] listeners = st.getListeners(eventType);
for (Listener listener : listeners) {
st.removeListener(eventType, listener);
}
}
}
我不得不復制一些價值觀,因爲它們是用默認的修飾符聲明StyledText
類的一部分。所以我無法訪問它們。
我希望,我沒有錯過任何INT值;)
+1使用事件地圖。 –
當我嘗試用'Text'做同樣的事情時,我得到一個SWTException表示不允許使用子類化(Eclipse 3.6),但我不使用StyledText時。爲什麼?我如何克服這一點?另外,他們可能有一天會拋出相同的異常,當試圖子類StyledText,使這不可能? – MrMas
我通過添加此方法得到了SubClassing異常:protected void checkSubclass(){} –