`

treeviewer的某列设置背景色

阅读更多
package com.test;

import java.io.File;

import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.swt.widgets.TreeItem;


public class TreeColumnTest {
   
    public void run(){
        final Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setLayout(new FillLayout());
       
        final CheckboxTreeViewer viewer = new CheckboxTreeViewer(shell, SWT.FULL_SELECTION);
        viewer.getTree().setHeaderVisible(true);
        TreeColumn column = new TreeColumn(viewer.getTree(), SWT.LEFT);
        column.setText("Name");
        column.setWidth(200);
        column = new TreeColumn(viewer.getTree(), SWT.LEFT);
        column.setText("Size");
        column.setWidth(100);
        column = new TreeColumn(viewer.getTree(), SWT.LEFT);
        column.setText("Hidden");
        column.setWidth(100);
        viewer.setContentProvider(new MyTreeContenetProvider());
        viewer.setLabelProvider(new MyTableLableProvider());
        viewer.setInput(new File("/"));
       viewer.addCheckStateListener(new ICheckStateListener(){

@Override
public void checkStateChanged(CheckStateChangedEvent event) {
//获取所设置背景色的前几列的宽度,不包含本身
int width=viewer.getTree().getColumn(0).getWidth()+viewer.getTree().getColumn(1).getWidth();
System.out.println(width);
TreeItem treeItem=(TreeItem) viewer.testFindItem(event.getElement());
Point point=new Point(treeItem.getBounds().x+width,treeItem.getBounds().y);
ViewerCell viewercell=viewer.getCell(point);
viewercell.setBackground(new Color(Display.getDefault(),new RGB(255,255,0)));
}
      
       });
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }

    public static void main(String[] args) {
        new TreeColumnTest().run();
    }
   
    class MyTreeContenetProvider implements ITreeContentProvider{

        public Object[] getChildren(Object parentElement) {
            File file=(File)parentElement;
            if(file.isDirectory())
                return file.listFiles();
            else
                return null;
        }

        public Object getParent(Object element) {
            File file=(File)element;
            return file.getParentFile();
        }

        public boolean hasChildren(Object element) {
            File file=(File)element;
            return file.isDirectory()/*&&file.list().length>0*/;
        }

        public Object[] getElements(Object inputElement) {
            File file=(File)inputElement;
            return file.isDirectory()?file.listFiles():new Object[]{file};
        }

        public void dispose() {
           
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
           
        }
       
    }
   
    class MyTableLableProvider implements ITableLabelProvider{

   
   
        public MyTableLableProvider() {
super();
//this.addListener(this);
}

public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            File file=(File)element;
            switch (columnIndex) {
            case 0:
                return file.getName();
            case 1:
                return ""+file.length();
            case 2:
                return ""+file.isHidden();
            default:
                return "";
            }
        }

        public void addListener(ILabelProviderListener listener) {
          //  addListener(this);
        // this.addListener(this);
        }

        public void dispose() {
           
        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

@Override
public void removeListener(ILabelProviderListener listener) {
// TODO Auto-generated method stub

}

       
       
    }
}
分享到:
评论

相关推荐

    SWT TreeViewer实例

    - 设置树的列。每个列可以有自己的标题和数据类型,如文本或图像。 - 配置列的宽度和对齐方式。 ```java treeViewer.getTree().setHeaderVisible(true); treeViewer.getTree().setLinesVisible(true); Table...

    Eclipse开发经典教程-TreeViewer组件

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

    swt Tree 例子项目代码

    3. **`TreeViewer`**:`TreeViewer`是Eclipse RCP框架中用于操作`Tree`的一种高级抽象,它提供了更多的功能和便利性。`TreeViewer`不仅包含了一个`Tree`控件,还提供了一套完整的机制来处理数据模型、过滤、排序、...

    Treeviewer1.0

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

    XML TreeViewer

    XML TreeViewer是一款专为XML开发人员设计的实用工具,它以树形结构展示XML文档,使得数据层次清晰、易于理解。对于处理复杂或大型XML文件的开发者来说,这是一个非常宝贵的辅助工具,因为它提供了直观的方式来浏览...

    treeviewer

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

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

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

    rcp treeview的相关资料

    接下来,你可以设置TreeViewer的各种属性,如它的列、其列的标题和数据类型,以及是否允许用户编辑等。 2. **内容提供者(ContentProvider)** 为了填充TreeViewer,你需要实现`IContentProvider`接口。这个接口...

    SWT控件2

    【压缩包子文件的文件名称列表】"TreeViewer"很可能包含了相关的代码示例或资源,如Java类文件,这些文件可能展示了如何初始化TreeViewer,添加节点,设置监听器,以及处理用户的交互事件等。读者可能可以通过这些源...

    DataGrid Treeview Drag and drop

    如果检测到拖动来源是TreeViewer,那么阻止拖放操作(设置e.Effect为DragDropEffects.None)。 6. **性能优化**: - 在处理大量数据时,注意性能优化。避免一次性加载所有数据到内存,而是采用分页或按需加载策略...

    eclipse从入门到精通的treexiew代码

    3. **设置内容提供者(ContentProvider)**:内容提供者是数据模型与TreeViewer之间的桥梁,负责为每个节点提供数据。实现`ITreeContentProvider`接口,定义获取根节点、子节点以及是否叶子节点的方法。 ```java ...

    treeview资料

    4. **设置输入数据**:通过调用`TreeViewer.setInput()`方法,可以指定要显示的数据源。 #### 15.4 示例代码 下面是一个简化的示例,展示了如何创建一个TreeViewer并填充数据: ```java // 创建TreeViewer Tree ...

    JFace-TableTree的若干问题.doc

    在Java编程环境中,JFace库是Eclipse RCP(Rich Client Platform)的一部分,它提供了一套高级用户界面组件,如TableViewer和TreeViewer,用于构建桌面应用程序。在文档标题和描述中提到的问题主要涉及到JFace中的...

    eclipse 集成 JSON2XML Tree Viewer

    然后,可以在"Window" -> "Preferences" -> "JSON2XML Tree Viewer"中设置插件的偏好,比如默认的编码方式、换行符等。 3. **使用插件**:创建一个新的文本文件,将JSON数据输入其中,保存文件为`.json`扩展名。...

    CheckboxTreeViewer

    这个组件通常被用在文件管理器或者配置设置中,让用户可以逐级选择或查看目录结构。 【描述】中的“直接导入就行,运行就行”意味着CheckboxTreeViewer的使用相对简单,只需将其导入到项目中,然后按照指定的方式...

    RCP资料 filterTreeViewer

    这篇博文(尽管描述中提到的是NULL,但实际上提供了博文链接)可能详细介绍了如何创建和定制一个具有过滤能力的TreeViewer,这是一个在Eclipse RCP中用于展示数据树结构的组件。 TreeViewer在Eclipse RCP中广泛用于...

    RCP实现的带有复选框的Tree

    在本文中,我们将深入探讨如何在Eclipse Rich Client Platform (RCP)应用程序中实现一个带有复选框的TreeViewer。RCP是一个强大的框架,用于构建桌面应用,它提供了丰富的UI组件和工具,使得开发者可以创建功能丰富...

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

    3. **设置窗口属性**:例如,设置窗口的标题。 4. **打开窗口**:使用 `open()` 方法来打开窗口。 5. **事件循环**:通过 `readAndDispatch()` 方法处理来自用户的输入事件。 6. **清理资源**:当窗口关闭时,...

    QT 树形图带右键 鼠标点击过滤

    接着,我们需要创建一个`QTreeWidget`实例,并设置其属性,如列数和列标题。同时,我们需要重载`itemClicked`信号,以便在用户点击树形图项时执行特定操作。以下是一个基本的代码示例: ```cpp #include #include ...

Global site tag (gtag.js) - Google Analytics