java - 带有组合框和复选框的 SWT TreeViewer

标签 java user-interface swt tableviewer treeviewer

我正在寻找一种方法,在表格/网格的第一列中显示一棵树,并带有其他三列,其中一列带有组合框,其他列带有复选框。我一直在尝试使用 TreeViewer 来完成这项工作,但它不太符合我的要求。这棵树配合得很好。 Combobox 列,我在该列中使用了 EditorSupport,并在 getCellEditor 方法中返回一个 ComboboxCellEditor,但是当您在该列中选择一个单元格时,您只能看到该列中有一个组合框。然后,当您单击单元格之外时,所选值将返回到默认空白。对于复选框列也是如此,只有在选择单元格时它才可见。我正在寻找能够显示我的树的东西,其中组合框列和复选框列始终可见。我查看过 TableViewer,但找不到强制在第一列中插入树的方法。我看过 Nebula Grid,但它看起来并不支持组合框。有关如何使其中之一像我正在寻找的那样工作的任何提示,或者是否有其他我应该查看的树/表/网格。谢谢。

编辑:这是 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);
    }
}

最佳答案

您的 setValue 方法必须更新模型数据中的值(内容提供程序返回的数据)。 setValueelement 参数是您应该更新的特定模型数据对象 (MyObject)。

更新值调用后:

getViewer().update(element, null);

获取树以更新模型的显示。

尝试直接更新 TreeItem 是行不通的。

关于java - 带有组合框和复选框的 SWT TreeViewer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32406527/

相关文章:

java - 将中缀转换为后缀时识别负值

javascript - 通过 UI 更改数据库时刷新前端 UI 的最佳实践是什么?

java - SWT DragSourceEvent 图像未正确锚定到鼠标指针

java - 具有复杂泛型的 SWT 监听器

java - Spring:java.io.NotSerializedException:MapSqlParameterSource

Java (SWT/JFace) - 处理 Runnable 中的所有异常

java - 解析传入的 JSON 并删除包装样板

c# - 如何使用 MainMenu 在状态栏上显示与菜单项相关的文本?

java - 如何为 GUI 制作启动画面?

java - JFileChooser 未打开默认的 Win 7 文件资源管理器