在RCP中ComboBoxCellEditor选择的基础上更改复选框选择
Change the checkbox selection on the basis of ComboBoxCellEditor selection in RCP
我有一个包含两列的 table,其中包括第一列中的复选框和第二列中的 ComboBoxCellEditor。当我selectComboBox中的东西时,对应行状态的CheckBox应该变成checked。
tabViewer = new TableViewer(innerTopComp, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CHECK );
对于 ComboBoxCellEditor,我创建了一个扩展 EditingSupport 的 class。
public class ComboEditing extends EditingSupport {
private ComboBoxCellEditor cellEditor;
private String[] comboDataArr;
public ComboEditing( final TableViewer viewer, String[] ComboDataArr) {
super(viewer);
this.comboDataArr = ComboDataArr;
this.cellEditor = new ComboBoxCellEditor(((TableViewer)viewer).getTable(), this.comboDataArr, SWT.DROP_DOWN);
}
@Override
protected CellEditor getCellEditor(Object element) {
// TODO Auto-generated method stub
return cellEditor;
}
@Override
protected boolean canEdit(Object element) {
// TODO Auto-generated method stub
return true;
}
@Override
protected Object getValue(Object element) {
// TODO Auto-generated method stub
return 0;
}
@Override
protected void setValue(Object element, Object value) {
// TODO Auto-generated method stub
if((element instanceof TableData) && (value instanceof Integer)) {
Integer choice = (Integer)value;
String option = comboDataArr[choice];
((TableData)element).setMatches( option );
getViewer().update(element, null);
}
}
}
如何在 ComboBox 中 selected 时选中行中 ComboBox 对应的复选框。
您应该对使用 SWT.CHECK
的表格使用 CheckboxTableViewer
,因为它提供了很多处理复选框的方法。
CheckboxTableViewer tabViewer = CheckboxTableViewer.newCheckList(innerTopComp, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
CheckboxTableViewer
扩展 TableViewer
因此您现有的代码仍然可以。
然后您可以在 EditingSupport
setValue
方法中使用 setChecked
方法:
CheckboxTableViewer viewer = (CheckboxTableViewer)getViewer();
viewer.setChecked(element, ... true or false);
我有一个包含两列的 table,其中包括第一列中的复选框和第二列中的 ComboBoxCellEditor。当我selectComboBox中的东西时,对应行状态的CheckBox应该变成checked。
tabViewer = new TableViewer(innerTopComp, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CHECK );
对于 ComboBoxCellEditor,我创建了一个扩展 EditingSupport 的 class。
public class ComboEditing extends EditingSupport {
private ComboBoxCellEditor cellEditor;
private String[] comboDataArr;
public ComboEditing( final TableViewer viewer, String[] ComboDataArr) {
super(viewer);
this.comboDataArr = ComboDataArr;
this.cellEditor = new ComboBoxCellEditor(((TableViewer)viewer).getTable(), this.comboDataArr, SWT.DROP_DOWN);
}
@Override
protected CellEditor getCellEditor(Object element) {
// TODO Auto-generated method stub
return cellEditor;
}
@Override
protected boolean canEdit(Object element) {
// TODO Auto-generated method stub
return true;
}
@Override
protected Object getValue(Object element) {
// TODO Auto-generated method stub
return 0;
}
@Override
protected void setValue(Object element, Object value) {
// TODO Auto-generated method stub
if((element instanceof TableData) && (value instanceof Integer)) {
Integer choice = (Integer)value;
String option = comboDataArr[choice];
((TableData)element).setMatches( option );
getViewer().update(element, null);
}
}
}
如何在 ComboBox 中 selected 时选中行中 ComboBox 对应的复选框。
您应该对使用 SWT.CHECK
的表格使用 CheckboxTableViewer
,因为它提供了很多处理复选框的方法。
CheckboxTableViewer tabViewer = CheckboxTableViewer.newCheckList(innerTopComp, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
CheckboxTableViewer
扩展 TableViewer
因此您现有的代码仍然可以。
然后您可以在 EditingSupport
setValue
方法中使用 setChecked
方法:
CheckboxTableViewer viewer = (CheckboxTableViewer)getViewer();
viewer.setChecked(element, ... true or false);