其实CheckBoxTreeView和TreeView基本上是一样的,他们共同的方法有:

TreeViewer 类封装了tree控件。树查看器按照父子关系来显示分等级的对象列表。此查看器需要设置标签供给器和内容供给器。The CheckboxTreeViewer加入了对个别条目泛灰的支持,还可以选中和反选与条目相关联的复选框。常用的API包括:
add(Object, Object) 为查看器中指定元素添加子元素。
add(Object, Object[]) 为查看器中指定元素添加若干子元素。
addTreeListener(ITreeViewerListener)为查看器添加展开收缩事件监听器。
collapseAll() 收缩树查看器的所有节点,只显示根节点。
collapseToLevel(Object, int) 以指定元素为根,收缩到指定层次。
expandAll() 从根节点开始,展开所有节点。
expandToLevel(int)将查看器展开到指定层次。
expandToLevel(Object, int) 展开指定元素的所有父节点,使指定元素可见。并以指定元素为根,展开到指定层次。
getExpandedElements() 返回查看器中展开节点对应元素的列表,包括那些被标记为展开状态,但是因为父节点是收缩的,所以当前隐藏的元素。
getExpandedState(Object) 返回指定元素对应的节点是展开还是收缩状态。
Tree getTree() 返回树查看器的树控件。
getVisibleExpandedElements() 获取用户可见的展开元素。
isExpandable(Object) 返回指定元素对应的节点是否可以被展开。
remove(Object) 从查看器中删除指定元素。
remove(Object[])从查看器中删除指定元素。
reveal(Object) 滚动查看器,确保指定元素被显示。
scrollDown(int, int) Scrolls the viewer's control down by one item from the given display-relative coordinates.
scrollUp(int, int) Scrolls the viewer's control up by one item from the given display-relative coordinates.
setAutoExpandLevel(int) 设置自动展开层次级别。
setContentProvider(IContentProvider) AbstractTreeViewer实现该方法,确保输入的内容查看器为 ITreeContentProvider。
setExpandedElements(Object[]) 设置展开的节点。
setExpandedState(Object, boolean) 设置指定元素对应的节点为展开还是收缩。
setLabelProvider(IBaseLabelProvider) 树查看器实现Viewer 框架的该方法确保输入的标签查看器为ILabelProvider。 CheckboxTreeViewer 增加了如下API:
addCheckStateListener(ICheckStateListener) 为查看器增加选中状态改变监听器。
getChecked(Object)返回指定元素的选中状态。
getCheckedElements() 返回查看器的选中元素列表,包括那些被标记为选中状态,但是因为父节点是收缩的,所以当前隐藏的元素。
getGrayed(Object) 返回指定元素 的泛灰状态。
getGrayedElements() 返回查看器的泛灰元素列表,包括那些被标记为泛灰状态,但是因为父节点是收缩的,所以当前隐藏的元素。
setChecked(Object, boolean)设置指定元素的选中状态。
setCheckedElements(Object[]) 设置查看器的选中元素。
setGrayChecked(Object, boolean) 设置指定元素被选中并泛灰,等同于调用setGrayed 和 setChecked方法。
setGrayed(Object, boolean) 设置指定元素的泛灰状态。
setGrayedElements(Object[]) 设置指定元素为泛灰状态。
setParentsGrayed(Object, boolean) 设置指定元素和其父元素为泛灰状态。
setSubtreeChecked(Object, boolean) 设置指定元素和其子元素的选中状态。
下面的程序例子展示了怎样构建一个树查看器。(参见 Figure -)。
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
public class TreeViewerExample {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Tree Viewer Example");
shell.setBounds(, , , );
shell.setLayout(new FillLayout());
final TreeViewer treeViewer =
new TreeViewer(shell, SWT.SINGLE);
treeViewer.setLabelProvider(
new PersonListLabelProvider());
treeViewer.setContentProvider(
new PersonTreeContentProvider());
treeViewer.setInput(Person.example());
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}Figure -. TreeViewer 样例
创建树查看器后,使用setLabelProvider()方法设置标签供给器,使用setContentProvider()方法设置内容供给器。 PersonTreeContentProvider, 返回每个节点的父节点和子节点。 程序如下:
import org.eclipse.jface.viewers.*;
public class PersonTreeContentProvider
extends ArrayContentProvider
implements ITreeContentProvider {
public Object[] getChildren(Object parentElement) {
Person person = (Person) parentElement;
return person.children;
}
public Object getParent(Object element) {
Person person = (Person) element;
return person.parent;
}
public boolean hasChildren(Object element) {
Person person = (Person) element;
return person.children.length > ;
}
}

SWT的CheckBoxTreeView的更多相关文章

  1. SWT的CheckBoxTreeView的上级菜单与下级菜单的选中的实现

    是不是很神奇? treeViewer.addCheckStateListener(new ICheckStateListener() { @Override public void checkStat ...

  2. eclipse里打开SWT项目找不到source/design的图形UI设计界面

    因为前天重新装了个新版的eclipse, 结果今天打开一个SWT的项目,突然找不到source/design的图形UI设计的两个切换按钮 我把SWT组件重新装了还是找不到.结果后来发现是因为重装ecl ...

  3. eclipse Swt编程—窗口小部件widget

    1.标签Label // 标签(Label类)组件是SWT中最简单的组件.Label类的构造方法和格式如下: // Label(Composite parent,

  4. Eclipse swt开发环境搭建

    原料: eclipse swt.下载链接为: Eclipse 4.6.2 Release Build: 4.6.2 配置说明: Developing SWT applications using Ec ...

  5. 使SWT/JFace支持跨平台

    由于SWT的实现机制,在不同平台下,必须引用不同swt*.jar. 由于这个瓶颈,我们要为不同的平台编译不同的版本.但是这是可以避免的.这将是本文要讨论的内容. 我一共google到了3种soluti ...

  6. 使Docker Container支持运行SWT程序

    1, 下载安装JDK的docker container 我是从这个源下载已经做好的JDK8的container: https://registry.hub.docker.com/u/dockerfil ...

  7. org.eclipse.swt.custom.StyledText.getScrollbarsMode()I

    错误: org.eclipse.swt.custom.StyledText.getScrollbarsMode()I 解决方法: 1 卸载,并手工清除myeclipse全部文件 2 重新安装myecl ...

  8. swt controls里的控件list

    swt controls里的控件list,怎么显示滚动条,并且滚动条自动移动到最下边时,显示最新内容 package com.jokul; import org.eclipse.swt.widgets ...

  9. SWT布局管理器

    一.充满式布局管理器(FillLayout类) FillLayout类是最简单的布局类,它把组件摆放成一行或者一列,并强制组件大小一致.一般,组件的高度与最高的组件一致,宽度与最宽的组件相同.,它里面 ...

随机推荐

  1. Win7+vs2010下安装boost_1_46_1库

    一.boost库分类: (1)不需要编译库:any.array.asio.conversion.crc.bind/mem_fn.enable_if.function.lambda.mpl.smart_ ...

  2. VC 绘图技巧--自定义形状图形

    自定义形状图形,定义几个点围城的图形,然后进行描边和填充: if (m_memDC.m_hDC!=NULL) { CPoint point[4]; point[0].x=nLeft+(int)(0.1 ...

  3. jsp:include怎么设置才能正确显示包含的页面呢

    1.项目的所有jsp都放在WEB-INF文件夹之下,使用的是SpirngMVC进行了过滤,jsp:include只能引入WEB-INF外部的jsp文件,对于改变后缀显示为htm的jsp的WEB-INF ...

  4. 自适应滤波器(Adaptive Filter)

    ======= Wikipedia的解释 ======= 自适应滤波器是能够根据输入信号自动调整性能进行数字信号处理的数字滤波器.作为对比,非自适应滤波器有静态的滤波器系数,这些静态系数一起组成传递函 ...

  5. C语言scanf函数详解

    函数名: scanf  功 能: 运行格式化输入  用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设 ...

  6. Silverlight 5(C#)初探

    接了个单子,非要用Silverlight 5来作一个项目,之前从来没接触过这东西,为了工作.硬着头皮也要上了.摸索了一晚上,大至整理出一些项目中须要的东西,下面作为初探记录: Silverlight ...

  7. fopen()功能

    1.2 文件输入和输出功能 键盘.显示器.打印机.磁盘驱动器和其他逻辑器件, 输入和输出可以通过文件管理方法可以完成. 最经常使用的编程是一个磁盘文件, 因此,这一部分主要是基于磁盘文件, 简介Tur ...

  8. 使用gulp创建ajax模拟请求

    概述 之前一直使用gulp构建前端项目,这个基于node流并崇尚“编程而非配置”的工具让我深深的爱上了他.强大的gulp能做到的不仅仅是压缩和合并js.css,它能做到的还有更多.今天我给大家带来使用 ...

  9. 区间Dp 暴力枚举+动态规划 Hdu1081

    F - 最大子矩形 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Status Des ...

  10. pdftk的使用介绍

    首先像下面的一页pdf,如果想把它分成两页,每一页只是一个ppt页面(为了在kindle里读比较方便), 那么可以首先用A-pdf page cut, 将pdf 切成这样12个部分 然后我们现在要的只 ...