我正在尋找一種方法來顯示錶格/網格的第一列中的其他三列,其中一個與組合框,其他與複選框。我一直在嘗試使用TreeViewer進行這項工作,但它不太適合我在尋找的東西。樹合在一起很好。在Combobox列中,我使用了列的EditorSupport並在getCellEditor方法中返回一個ComboboxCellEditor,但只能在列中選擇一個單元格時才能看到列中有組合框。然後,當您單擊單元格時,所選值將返回到默認空白。複選框列的相同情況僅在選中單元格時纔可見。我正在尋找能夠顯示我的樹的組合框,並且複選框列始終可見。我已經看過TableViewer,但是無法在第一列的樹中找到強制的方法。我看過Nebula Grid,但看起來不像它支持組合框。有關如何讓其中一個工作的任何提示,比如我正在尋找的東西,或者我應該看到的其他樹/表格/網格。謝謝。SWT TreeViewer與組合框和複選框
編輯:這是EditingSupport類的代碼。
private class ComboBoxEditingSupport extends EditingSupport
{
private ComboBoxCellEditor cellEditor;
public ComboBoxEditingSupport(ColumnViewer viewer)
{
super(viewer);
cellEditor =
new ComboBoxCellEditor(((TreeViewer) viewer).getTree(),
new String[] {
"Some String",
"Some other String" }, SWT.READ_ONLY);
}
@Override
protected CellEditor getCellEditor(Object element)
{
if (element instanceof MyObject
{
return cellEditor;
}
return null;
}
@Override
protected boolean canEdit(Object element)
{
if (element instanceof MyObject
{
return true;
}
return false;
}
@Override
protected Object getValue(Object element)
{
return 0;
}
@Override
protected void setValue(Object element, Object value)
{
TreeItem[] ti = treeViewer.getTree().getSelection();
CCombo combo = ((CCombo) cellEditor.getControl());
String str = combo.getItem(combo.getSelectionIndex());
ti[0].setText(1, str);
}
}
我已經厭倦swt TreeViewer TreeColumnViewers的列。我嘗試了Nebula Grid。這是關閉的,但它不支持在它的外觀列中的組合框。我試過TableViewer,但不支持我需要的樹。 – EdDen
編輯支持與ComboboxCellEditor應該工作,這聽起來像你在'setValue'方法有問題 - 向我們展示你的代碼。 –