我有一个代码,在SWT shell中添加了四个复选框按钮,我在checkBox按钮上添加了选择Listener,我想在SWT Shell的OK,CANCEL和CLOSE按钮上删除它,我该如何处理事件,这是我的代码
grpVersionTreeComponents.setLayoutData(componentsRenderer.createGridData(490, 220, 4));
for(int versionCount = 0; versionCount < versionSplitters.length ; versionCount++ ){
String splitter= versionSplitters[versionCount];
Button cbVersionSplitter = new CheckBoxWrapper().getButton(grpVersionTreeComponents,splitter.toString() , "");
cbVersionSplitter.setEnabled(true);
versionSplitterCheckBoxList.add(cbVersionSplitter);
versionSplitterCheckBoxList.get(versionCount).addSelectionListener(addSplitterCheckBoxListner(cbVersionSplitter));
}
这是我的选择适配器方法
public SelectionAdapter addSplitterCheckBoxListner(final Button button){
return new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
String[] defaultVersionSplitters = PropertyClass.getPropertyLabel(QTLConstants.VERSIONING_ASSISTENT_PAGE_SPLLITER).split(QTLConstants.MULTIPLE_EXTENSIONS_SPLITER);
//check if button.getText() is equal to "Custom Splitter" String
if(button.getText().equalsIgnoreCase(defaultVersionSplitters[3])){
if(button.getSelection()){
customVersionSplitterText.setEnabled(true);
}else{
customVersionSplitterText.setEnabled(false);
}
}
}
};
}
和OK取消按钮以这种方式添加
private void addOkCancelButtonOnVersionTreePopup(final Shell versionTreeComponentsShell){
Button ok = componentsRenderer.createButtonWidget(versionTreeComponentsShell, SWT.PUSH,
PropertyClass.getPropertyLabel(QTLConstants.OK_BUTTON));
Button cancel = componentsRenderer.createButtonWidget(versionTreeComponentsShell, SWT.PUSH,
PropertyClass.getPropertyLabel(QTLConstants.CANCEL_BUTTON));
ok.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
}
});
}
cancel.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
/*disposeSelectionListener(cbVersionSplitter);*/
versionTreeComponentsShell.close();
}
});
}
}
那我怎么能删除这个选择监听器
此致
答案 0 :(得分:0)
您可以执行以下操作:
1)。创建将扩展SelectionAdapter
类的类。
2)。像在代码中一样覆盖widgetSelected()
方法。
3)。使用以下内容覆盖equals(Object other)
方法:
@Override
public boolean equals(Object other) {
if (other == null) {
return false;
}
if (other instanceof MyOwnSelectionAdapter) {
return true;
}
}
其中MyOwnSelectionAdapter
是您自己的SelectionAdapter
实现。
4)。现在,您可以执行以下操作:cancel.removeSelectionListener(new MyOwnSelectionAdapter());
,它将删除该选择侦听器。