我想记录用户操作的信息,例如按钮点击,显示复合。所以我使用事件监听器。当我使用SWT.FocusIn时,我可以获得真正的复合名称,但是当我使用SWT时,我无法获得真正的类名。
Listener listener = new Listener() {
public void handleEvent(Event event) {
switch (event.type) {
case SWT.FocusIn: {
if(event!=null&&event.widget!=null){
Control parent = ((Control)event.widget).getParent();
while(parent!=null&&(parent.toString().startsWith("Composite")
||parent.toString().startsWith("Group")
||parent.toString().startsWith("Splitter")
)){
parent = parent.getParent();
}
if(parent!=null){
**//This place I can get "SWT.FocusIn:DoSomethingComposite"(The subclass of Composite).**
log.info("SWT.FocusIn:" + parent.toString());
}
}
break;
}
case SWT.Show: {
if (event.widget != null) {
if(event.widget instanceof Composite) {
Composite composite = (Composite)(event.widget);
**//But this place I just get "SWT.Show:Composite".**
log.info("SWT.Show:" + event.widget.toString());
}
}
break;
}
default: {
break;
}
}
}
}
PlatformUI.getWorkbench().getDisplay().addFilter(SWT.Show, listener);
PlatformUI.getWorkbench().getDisplay().addFilter(SWT.FocusIn, listener);