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
}
}
}
分享到:
相关推荐
- 设置树的列。每个列可以有自己的标题和数据类型,如文本或图像。 - 配置列的宽度和对齐方式。 ```java treeViewer.getTree().setHeaderVisible(true); treeViewer.getTree().setLinesVisible(true); Table...
### Eclipse开发经典教程:深入解析TreeViewer组件 在Eclipse平台的GUI开发中,`TreeViewer`组件扮演着至关重要的角色,特别是在展示层次结构数据时。`TreeViewer`不仅能够直观地呈现树形结构的数据,还支持丰富的...
3. **`TreeViewer`**:`TreeViewer`是Eclipse RCP框架中用于操作`Tree`的一种高级抽象,它提供了更多的功能和便利性。`TreeViewer`不仅包含了一个`Tree`控件,还提供了一套完整的机制来处理数据模型、过滤、排序、...
【Treeviewer1.0】是一款基于Python 3.4编程语言、PyQt5图形界面库以及Matplotlib数据可视化库的决策树查看工具。这个工具专为解析和展示微软的决策树模型而设计,使得用户能够直观地理解并分析决策树模型的结果。...
XML TreeViewer是一款专为XML开发人员设计的实用工具,它以树形结构展示XML文档,使得数据层次清晰、易于理解。对于处理复杂或大型XML文件的开发者来说,这是一个非常宝贵的辅助工具,因为它提供了直观的方式来浏览...
是一款针对后缀名为.tre .tree .nwk 等树文件的打开及编辑软件
#TreeViewer 交互式进化树可视化 此 Web 服务旨在提供完全交互式的进化树查看器。 该项目仍处于重开发阶段,可能会频繁出现大规模更改。 要测试 TreeViewer 的基本版本,请单击。 依赖项包括 D3.js、Bootstrap 和 ...
接下来,你可以设置TreeViewer的各种属性,如它的列、其列的标题和数据类型,以及是否允许用户编辑等。 2. **内容提供者(ContentProvider)** 为了填充TreeViewer,你需要实现`IContentProvider`接口。这个接口...
【压缩包子文件的文件名称列表】"TreeViewer"很可能包含了相关的代码示例或资源,如Java类文件,这些文件可能展示了如何初始化TreeViewer,添加节点,设置监听器,以及处理用户的交互事件等。读者可能可以通过这些源...
如果检测到拖动来源是TreeViewer,那么阻止拖放操作(设置e.Effect为DragDropEffects.None)。 6. **性能优化**: - 在处理大量数据时,注意性能优化。避免一次性加载所有数据到内存,而是采用分页或按需加载策略...
3. **设置内容提供者(ContentProvider)**:内容提供者是数据模型与TreeViewer之间的桥梁,负责为每个节点提供数据。实现`ITreeContentProvider`接口,定义获取根节点、子节点以及是否叶子节点的方法。 ```java ...
4. **设置输入数据**:通过调用`TreeViewer.setInput()`方法,可以指定要显示的数据源。 #### 15.4 示例代码 下面是一个简化的示例,展示了如何创建一个TreeViewer并填充数据: ```java // 创建TreeViewer Tree ...
在Java编程环境中,JFace库是Eclipse RCP(Rich Client Platform)的一部分,它提供了一套高级用户界面组件,如TableViewer和TreeViewer,用于构建桌面应用程序。在文档标题和描述中提到的问题主要涉及到JFace中的...
然后,可以在"Window" -> "Preferences" -> "JSON2XML Tree Viewer"中设置插件的偏好,比如默认的编码方式、换行符等。 3. **使用插件**:创建一个新的文本文件,将JSON数据输入其中,保存文件为`.json`扩展名。...
这个组件通常被用在文件管理器或者配置设置中,让用户可以逐级选择或查看目录结构。 【描述】中的“直接导入就行,运行就行”意味着CheckboxTreeViewer的使用相对简单,只需将其导入到项目中,然后按照指定的方式...
这篇博文(尽管描述中提到的是NULL,但实际上提供了博文链接)可能详细介绍了如何创建和定制一个具有过滤能力的TreeViewer,这是一个在Eclipse RCP中用于展示数据树结构的组件。 TreeViewer在Eclipse RCP中广泛用于...
在本文中,我们将深入探讨如何在Eclipse Rich Client Platform (RCP)应用程序中实现一个带有复选框的TreeViewer。RCP是一个强大的框架,用于构建桌面应用,它提供了丰富的UI组件和工具,使得开发者可以创建功能丰富...
3. **设置窗口属性**:例如,设置窗口的标题。 4. **打开窗口**:使用 `open()` 方法来打开窗口。 5. **事件循环**:通过 `readAndDispatch()` 方法处理来自用户的输入事件。 6. **清理资源**:当窗口关闭时,...
接着,我们需要创建一个`QTreeWidget`实例,并设置其属性,如列数和列标题。同时,我们需要重载`itemClicked`信号,以便在用户点击树形图项时执行特定操作。以下是一个基本的代码示例: ```cpp #include #include ...