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
}
}
}
分享到:
相关推荐
Eclipse开发经典教程-TreeViewer组件
SWT的一个实例 TreeViewer的小程序范例
基于python3.4,pyqt5和matplotlib的微软决二叉策树查看工具,内含源码
是一款针对后缀名为.tre .tree .nwk 等树文件的打开及编辑软件
XML Tree Viewer,xml 树形结构查看器,是xml有关的开发人员的必备工具
#TreeViewer 交互式进化树可视化 此 Web 服务旨在提供完全交互式的进化树查看器。 该项目仍处于重开发阶段,可能会频繁出现大规模更改。 要测试 TreeViewer 的基本版本,请单击。 依赖项包括 D3.js、Bootstrap 和 ...
eclipse 集成 JSON2XML Tree Viewer,json文本可以转换成xml和Tree
实现datagrid and treeviewer的drag drop, 只可单向drag
qt 树形图 treeviewer 鼠标点击过滤
本书由浅入深、有重点、有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章。第一篇介绍Eclipse平台界面开发的基础知识,包括SWT控件的使用、界面布局、事件处理等内容;第二篇是插件开发核心技术,主要介绍...
9.11.5 换行自动设置背景颜色 204 9.12 浏览器 205 9.13 本章小结 210 第10章 SWT中的拖放支持 211 10.1 可拖放的树 211 10.2 拖放原理概述 214 10.3 拖放源(DragSource) 215 10.3.1 创建拖放源对象...
基于C# winform,写的一个自定义TreeView和TreeNode,可以在每个自定义节点旁添加按钮。
本实例完成了bootstrap TreeView的各种选择的事件触发,选中后打印出树节点的相关信息,包括单选,全选,父级和定位
实现双击功能 ·Source directory双击执行设置源目录操作 ·Target directory空白区域操作执行设置目标目录操作 ·Confige file edit text双击执行读取配置文件操作 2. 界面调整: ·加入...
RCP实现的带有复选框的TreeViewer,选择相关行,能够提示用户相关信息
包含9个部分,另附核心编程——插件、界面与Web开发 (节选)> 9个部分分别是:SWT布局,常用SWT组件,SWT事件,TreeViewer组件,展现组件,常用快捷键,插件安装,单元测试,代码重构
随着计算机和网络的普及,高等学校里纷纷建立了C/S或者B/S结构的网上选课系统。...由于每个院系都开设多门课程供学生选择,院系信息和课程信息形成一个树状的结构,所以使用TreeViewer控件显示这些信息比较合适。
介绍Wismar应用科学大学的计算工程与自动化研究小组(CEA)已开发了软件“ SES_Tbx_Matlab”。 该软件的目的是使用系统实体结构(SES)对系统变量(系统结构和参数配置)进行基于本体的建模。... 新增工具:TREEVIEWER