StyledText
如果缺少实例,如何从 SWT 中删除所有侦听器?我尝试使用该StyledText.getListeners(int)
方法获取所有实例,然后能够将它们删除。但是找到所有必需的 int 值是很累的。这是最直接的方法吗?谢谢!
这是我的临时解决方案:
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
使用 default 修饰符声明的类的一部分。所以我无法访问它们。
我希望,我没有错过任何 int 值;)