JAVA.SWT/JFace: SWT高级控件之树(一)

2014-11-24 02:33:33 · 作者: · 浏览: 5

package com.wjc.tree;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TreeEditor;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.TreeEvent;
import org.eclipse.swt.events.TreeListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.swt.widgets.TreeItem;

public class TreeSample {
public static void main(String[] args) {

final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Tree Sample");
shell.setLayout(new FillLayout());
// 创建一个树对象
final Tree tree = new Tree(shell, SWT.BORDER | SWT.SINGLE);
// 创建树的一个根节点
TreeItem root = new TreeItem(tree, SWT.NULL);
root.setText("根节点");
// 创建子孙节点
TreeItem child1 = new TreeItem(root, SWT.NULL);
child1.setText("子孙1");
TreeItem child2 = new TreeItem(root, SWT.NULL);
child2.setText("子孙2");
TreeItem child3 = new TreeItem(root, SWT.NULL);
child3.setText("子孙3");

TreeItem child11 = new TreeItem(child1, SWT.NULL);
child11.setText("子孙11");
TreeItem child12 = new TreeItem(child1, SWT.NULL);
child12.setText("子孙12");


TreeItem child111 = new TreeItem(child11, SWT.NULL);
child111.setText("子孙111");
TreeItem child112 = new TreeItem(child11, SWT.NULL);
child112.setText("子孙112");
// 调用convertImage方法来设置树的图标
convertImage(tree);
// 为树注册树监听事件
tree.addTreeListener(new TreeListener() {
// 当折叠树节点时
public void treeCollapsed(TreeEvent e) {
// 首先获得触发事件的TreeItem
TreeItem item = (TreeItem) e.item;
// 将该节点的图标设置为关闭状态
// item.setImage(ImageFactory.loadImage(tree.getDisplay(),
// ImageFactory.TOC_CLOSED));
}

// 当展开树节点时
public void treeExpanded(TreeEvent e) {
TreeItem item = (TreeItem) e.item;
// item.setImage(ImageFactory.loadImage(tree.getDisplay(),
// ImageFactory.TOC_OPEN));
}

});
// /********************************************************
// 创建一个可编辑的TreeEditor对象
final TreeEditor editor = new TreeEditor(tree);
editor.horizontalAlignment = SWT.LEFT;
editor.grabHorizontal = true;
editor.minimumWidth = 30;
// 注册选中事件
tree.addSelectionListener(new SelectionAdapter() {
// 当鼠标双击节点时使节点可编辑
public void widgetDefaultSelected(SelectionEvent e) {
// 释放之前编辑的控件
Control oldEditor = editor.getEditor();
if (oldEditor != null)
oldEditor.dispose();
// 获得触发事件的TreeItem,如果为null,返回
TreeItem item