`

TreeViewer使用小计

    博客分类:
  • java
阅读更多

Jface.treeViewer使用小结

作为表格树

treeViewer 的使用和TableViewer的使用基本一样。如下:

treeViewer = new TreeViewer(this, SWT.FULL_SELECTION | SWT.BORDER);

        GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);

        treeViewer.getTree().setLayoutData(gridData);

 

        treeViewer.getTree().setHeaderVisible(true);

        treeViewer.getTree().setLinesVisible(true);

      

       // 创建列=====================

        UI.createTreeViewerColumn(treeViewer, "首列", 250);

        UI.createTreeViewerColumn(treeViewer, "第二列", 60);

        UI.createTreeViewerColumn(treeViewer, "第三列", 70);

        ……

        UI.createTreeViewerColumn(treeViewer, "备注", 80);

       // 创建列完毕===================

 

        C1PortTableProvider provider = new C1PortTableProvider();

        treeViewer.setContentProvider(provider);

        treeViewer.setLabelProvider(provider);

 

上面就创建了一个表格树的形式。其中第一列将以树形展示。

其中,

createTreeViewerColumn(TreeViewer viewer, String text, int width)

    {

        final TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.LEFT);

        column.getColumn().setText(text == null ? "" : text);

        column.getColumn().setWidth(width);

        column.getColumn().setData(ID, text);

 

        return column;

}

LabelProvider

它的LabelProviderITableLabelProvider的实现。主要是实现:

public String getColumnText(Object element, int columnIndex);方法来填充界面显示的内容。

contentProvider

它的contentProviderITreeContentProvider的实现。ITreeContentProvider中的四个抽象方法都需要实现。

数据

为了满足或者说比较容易的实现ITreeContentProvider中的方法,需要设计一下这个treeViewer的数据来源,也就是treeViewer.setInput()时的参数。参照树的表现形式和ITreeContentProvider的四个方法。这个数据结构很容易的设计成:

protected String name;

protected EvaTreeItem parent;

protected List<EvaTreeItem> children;

private 其他属性(包括各列值)

public EvaTreeItem(String name, EvaTreeItem parent)

{

    super();

    this.name = name;

    this.parent = parent;

}

publicvoid addChild(EvaTreeItem child)

{

    if (null != child)

    {

        if (null == children)

        {

            children = new ArrayList<EvaTreeItem>();

        }

        children.add(child);

    }

}

……

这样在setInput()时,我们构造一个EvaTreeItem的集合(list等)作为参数,在实现ITreeContentProvider方法时,比较好写。如下:

@Override

    public Object[] getElements(Object inputElement)

    {

        if (inputElement instanceof List<?>)

        {

            return ((List<?>)inputElement).toArray();

        }

        returnnull;

    }

    @Override

    public Object[] getChildren(Object parentElement)

    {

        if (parentElement instanceof EvaTreeItem)

        {

            EvaTreeItem ccase = (EvaTreeItem)parentElement;

            if (null != ccase.getChildren() && !ccase.getChildren().isEmpty())

            {

                return ccase.getChildren().toArray();

            }

        }

        returnnull;

    }

 

    @Override

    public Object getParent(Object element)

    {

        if (element instanceof EvaTreeItem)

        {

            return ((EvaTreeItem)element).getParent();

        }

        returnnull;

    }

 

    @Override

    publicboolean hasChildren(Object parentElement)

    {

        if (parentElement instanceof EvaTreeItem)

        {

            EvaTreeItem ccase = (EvaTreeItem)parentElement;

            return (null != ccase.getChildren() && !ccase.getChildren().isEmpty());

        }

        returnfalse;

}

作为树使用

创建方式如同上述,但是要去掉创建列的部分。同时,可能需要去掉表格头和网线的显示。另外它的labelProvider不同(其他同,包括contentprovider和数据样式)

LabelProvider

它的labelprovider和上面的不同,不创建列时,它的labelprovider需要实现的是ILabelProvider.并实现其public String getText(Object element)方法。

 

 

分享到:
评论

相关推荐

    SWT TreeViewer实例

    本实例将深入探讨如何使用SWT TreeViewer来构建一个简单的树形视图。 首先,我们需要了解SWT TreeViewer的基本概念。TreeViewer是SWT中的一个类,它封装了JFace Data Binding的支持,使得我们能够更方便地绑定数据...

    Eclipse开发经典教程-TreeViewer组件

    ### Eclipse开发经典教程:深入解析TreeViewer组件 在Eclipse平台的GUI开发中,`TreeViewer`组件扮演着至关重要的角色,特别是在展示层次结构数据时。`TreeViewer`不仅能够直观地呈现树形结构的数据,还支持丰富的...

    Treeviewer1.0

    【Treeviewer1.0】是一款基于Python 3.4编程语言、PyQt5图形界面库以及Matplotlib数据可视化库的决策树查看工具。这个工具专为解析和展示微软的决策树模型而设计,使得用户能够直观地理解并分析决策树模型的结果。...

    XML TreeViewer

    XML TreeViewer是一款专为XML开发人员设计的实用工具,它以树形结构展示XML文档...在实际工作中,熟练使用此类工具可以显著提高XML文档的处理效率,特别是在处理大型、复杂的XML文件时,能有效地提升开发和调试的效率。

    treeviewer

    是一款针对后缀名为.tre .tree .nwk 等树文件的打开及编辑软件

    TreeViewer:使用 D3.js 的交互式进化树查看器

    #TreeViewer 交互式进化树可视化 此 Web 服务旨在提供完全交互式的进化树查看器。 该项目仍处于重开发阶段,可能会频繁出现大规模更改。 要测试 TreeViewer 的基本版本,请单击。 依赖项包括 D3.js、Bootstrap 和 ...

    swt Tree 例子项目代码

    在给定的项目中,我们可以期待看到如何初始化`Tree`控件,如何创建和管理`TreeItem`,以及如何使用`TreeViewer`和`LabelProvider`来展示数据。这个项目可能还涉及了事件监听,以便在用户交互时响应,比如节点的点击...

    SWT控件2

    【标题】"SWT控件2"涉及到的是Java编程领域中的一个特定话题,特别是使用SWT(Standard Widget Toolkit)库创建图形用户界面GUI时的一种组件——TreeViewer。SWT是Eclipse项目的一部分,它提供了一个原生的GUI工具包...

    eclipse从入门到精通的treexiew代码

    在本文中,我们将深入探讨Eclipse IDE中的TreeViewer组件,它是Java SWT(Standard Widget Toolkit)...通过实践和调试`treeviewer`代码,您将能深入理解如何在实际项目中有效地使用TreeViewer,从而实现从入门到精通。

    DataGrid Treeview Drag and drop

    在.NET开发环境中,数据展示控件DataGrid和TreeViewer是常用的数据可视化工具。"DataGrid Treeview Drag and drop"这个主题关注的是如何在C#中实现这两个控件之间的拖放功能,但仅支持从DataGrid到TreeViewer的单向...

    rcp treeview的相关资料

    然后,通过调用`new TreeViewer(composite)`来实例化TreeViewer对象。接下来,你可以设置TreeViewer的各种属性,如它的列、其列的标题和数据类型,以及是否允许用户编辑等。 2. **内容提供者(ContentProvider)** ...

    Eclipse下SWT图形界面开发指南(1)

    从简单的“Hello, World”示例开始,逐步深入到使用 JFace 创建复杂窗口,以及如何使用 `TreeViewer` 和 `TableViewer` 显示各种类型的数据。这些基础知识为后续文章中的更高级主题奠定了基础。 #### 相关资源 - ...

    CheckboxTreeViewer

    "TreeViewer"再次强调了这是基于TreeViewer的扩展组件。 至于【压缩包子文件的文件名称列表】:FileTreeView,这可能是实现CheckboxTreeViewer功能的一个示例或者测试项目。这个文件可能包含了一个简单的Java应用,...

    RCP资料 filterTreeViewer

    总之,"RCP资料 filterTreeViewer"这个主题涵盖的是Eclipse RCP应用中使用过滤功能的TreeViewer组件,这涉及到数据模型、用户交互以及过滤逻辑的实现。理解和掌握这些知识对于开发功能丰富的Eclipse RCP应用程序至关...

    HDFView_UsersGuide.pdf

    HDFView是一款用于查看和编辑HDF4和HDF5文件内容的图形化工具,本指南文档主要提供了HDFView的用户使用说明和HDF对象模型的简要介绍。 首先,HDFView可以用于查看和编辑HDF4和HDF5文件内容,这包括打开文件、查看...

    treeview资料

    这种分层的数据结构非常适合使用TreeViewer来展示。 **国家实体(CountryEntity)** ```java public class CountryEntity { private Long id; private String name; private List&lt;CityEntity&gt; cities; public...

    RCP实现的带有复选框的Tree

    为了在TreeViewer中添加复选框功能,我们需要使用CheckboxTreeViewer类,这是TreeViewer的一个扩展,专门为包含复选框的树节点而设计。 实现步骤如下: 1. **创建CheckboxTreeViewer实例**:首先,你需要在你的...

    eclipse 集成 JSON2XML Tree Viewer

    Eclipse是一款广泛使用的集成开发环境(IDE),为开发者提供了丰富的插件支持,使得这样的转换变得轻松便捷。本篇文章将详细介绍如何在Eclipse中集成JSON2XML Tree Viewer插件,以及如何利用它将JSON文本转换为XML和...

    简单的文件资源管理器应用程序

    2. **创建TreeViewer**:为Shell添加一个TreeControl,并使用TreeViewer进行包装。加载文件系统的根目录作为初始节点。 3. **实现TreeViewer监听**:当用户选择树中的某个节点时,更新TableViewer显示选定目录下的...

Global site tag (gtag.js) - Google Analytics