`

Tree中增加图像

阅读更多

原来程序:Snippet220

程序说明:

1,newItem.setData(image);  将Item和Image关联起来。

2,SWT.MeasureItem; 计算Item应该画多大,就是计算好了画多大后,在加上Image的宽度,这里要注意的是改变event.width的宽度就改变的项的宽度了。

3,SWT.PaintItem; 画上设置的图像。

 

 

public class Snippet220 {
	public static void main(String [] args) {
		Display display = new Display();
		Shell shell = new Shell(display);
		shell.setBounds(10, 10, 350, 200);
		Image image = drawImage(display);
		final int IMAGE_MARGIN = 2;
		final Tree tree = new Tree(shell, SWT.CHECK);
		tree.setBounds(10, 10, 300, 150);
		TreeItem item = new TreeItem(tree, SWT.NONE);
		item.setText("root item");
		for(int i = 0; i < 3; i++) {
			TreeItem newItem = new TreeItem(item, SWT.NONE);
			newItem.setText("descendent " + i);
			newItem.setImage(image);
			if(i%2 == 0)
				newItem.setData(image);
			item.setExpanded(true);
			item = newItem;
		}

		/*
		 * NOTE: MeasureItem and PaintItem are called repeatedly.  Therefore it is
		 * critical for performance that these methods be as efficient as possible.
		 */
		tree.addListener(SWT.MeasureItem, new Listener() {
			public void handleEvent(Event event) {
				TreeItem item = (TreeItem)event.item;
				Image trailingImage = (Image)item.getData();
				if (trailingImage != null) {
					event.width += trailingImage.getBounds().width + IMAGE_MARGIN;
				}
			}
		});
		tree.addListener(SWT.PaintItem, new Listener() {
			public void handleEvent(Event event) {
				TreeItem item = (TreeItem)event.item;
				Image trailingImage = (Image)item.getData();
				if (trailingImage != null) {
					int x = event.x + event.width + IMAGE_MARGIN;
					int itemHeight = tree.getItemHeight();
					int imageHeight = trailingImage.getBounds().height;
					int y = event.y + (itemHeight - imageHeight) / 2;
					event.gc.drawImage(trailingImage, x, y);
				}
			}
		});
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) display.sleep();
		}
		// Image should disposed by who created it.
		image.dispose();
		display.dispose();
	}

	private static Image drawImage(Display display) {
		Image xImage = new Image(display, 16, 16);
		GC gc = new GC(xImage);
		gc.setForeground(display.getSystemColor(SWT.COLOR_RED));
		gc.drawLine(1, 1, 14, 14);
		gc.drawLine(1, 14, 14, 1);
		gc.drawOval(2, 2, 11, 11);
		gc.dispose();
		return xImage;
	}
}

 

 

 

 

  • 大小: 6.9 KB
分享到:
评论
2 楼 xmind 2011-09-22  
是吗,那你是什么平台啊?
我是win。 
1 楼 taoletao 2011-09-05  
我的前面是箭头,不是你这种加减号的,你是怎么弄得,我弄半天也不能弄成你这样的

相关推荐

    MFC_Tree.zip_MFC tree_随机树图像

    在这个名为"MFC_Tree.zip_MFC tree_随机树图像"的压缩包中,我们可以看到它涉及到了MFC中关于图形用户界面(GUI)和自定义控件的使用。 在描述中提到的“随机生成一个简单的树的图像”是指利用MFC创建一个图形界面...

    vc中treecontrol的简单用法

    本文将详细介绍在VS2010下如何实现TreeControl的基本操作,包括载入、增加、删除、查看和排序功能,并讨论如何将一个树中的项目添加到另一个树的特定目录下。 1. **载入数据** 载入数据通常是通过调用`InsertItem...

    python实现FP-TREE挖掘算法

    总的来说,Python实现的FP-TREE算法提供了灵活和直观的方式来探索数据中的关联规则,结合可视化功能,使得数据挖掘过程更加易于理解和解释。对于初学者和专业人士,这样的实现都有很高的学习价值和实用性。

    基于内容图像检索中的一种动态多维索引方法

    - **插入算法**: 当需要向ESR-tree中插入一个新的图像特征时,首先根据该特征的坐标确定合适的节点。然后,如果节点已满,则触发分裂操作。插入过程中会更新相关的MBR和超球体信息。 - **分裂算法**: 当节点中的元素...

    B-tree--BP-tree--B--tree--R-tree.rar_B+_R-Tree_b+tree_btree转换为rt

    在《B-tree--BP-tree--B--tree--R-tree.rar》这个压缩包中,包含了对这四种数据结构的详细解释和比较,是学习和理解这些概念的重要参考资料。通过阅读《B-tree》、《B+ tree》、《B tree》和《R tree》这四个文档,...

    tree 1_python_

    "tree 1_python_" 这个标题表明我们将探讨如何使用Python来创建一个代表树形结构的图像,而且可能还涉及到动态效果,比如生长、摇摆等动画效果。 Python中有多个库可以用来绘制图形,例如`turtle`库,这是一个内置...

    基于Max-tree 的连通区域标记新算法1

    在Max-tree 中,每个节点代表图像中的一个像素,根节点对应于整个图像,而子节点代表图像中的一片连通区域。Max-tree 的构建基于图像的局部最大值,使得每个子节点的值都是其覆盖区域内像素的最大值。这种结构能够...

    双树复小波变换(The dual-tree complex wavelet transform),

    - **医学图像分析**:双树复小波变换在医学图像处理中的应用能够帮助医生更精确地诊断疾病,例如通过增强图像对比度来识别肿瘤边界等。 #### 结论 双树复小波变换作为一种先进的信号处理技术,其独特的特性和优势...

    Familytree

    标题“Familytree”暗示我们可能在讨论一个与家谱或家族历史相关的设计项目,而“字体”这个标签则指向了这个项目中文字呈现的重要角色。在这个主题中,我们可以深入探讨字体设计、排版以及如何利用视觉元素来讲述...

    haarcascade_frontalface_alt_tree

    在计算机视觉领域,人脸识别是一项重要的技术,用于检测和识别图像中的面部特征。OpenCV(开源计算机视觉库)是实现这一功能的常用工具,它提供了一系列的算法和预训练模型,帮助开发者快速构建人脸识别系统。标题...

    KDtree的建立以及KDtree的最近邻域搜索

    3. **适用性强**: 可用于多种任务,如机器学习中的K近邻算法、数据聚类、图像分割等。 **四、KD树的局限性** 1. **维数灾难**: 随着维度增加,数据分布会变得更加稀疏,可能导致性能下降。 2. **构建复杂度**: ...

    Adaboost_tree.zip

    在Adaboost_tree.zip文件中,可能包含了用Python的Scikit-Learn库实现的Adaboost算法,其中的数据和代码可能用于展示如何用决策桩构建Adaboost模型,并通过matplotlib等工具进行可视化,展示每一轮决策桩如何改变...

    图像压缩中的小波变换

    标题和描述中提到的知识点是关于图像压缩领域中的一种关键技术——小波变换的应用,特别是嵌入式零树小波编码(Embedded Zero Tree Wavelet,EZW)算法的介绍及其改进方案。下面将详细阐述这些知识点。 ### 图像...

    duilib调用mfc MFC Tree的列子..

    这可以通过在MFC中使用CTreeCtrl的InsertItem()等方法来实现,为每个节点添加文本和图像。 5. **交互处理**:当用户与Tree控件交互时,如点击一个节点,Duilib需要能捕获这些事件。这通常通过在Duilib的事件处理器...

    tnc.rar_The Tree

    本文将深入探讨一种名为"TNC"(Tree Node Cache)的技术,它在UBIFS(Unsorted Block Image File System,未排序块图像文件系统)中用于优化B-Tree的索引节点缓存。TNC的引入旨在提高文件系统的性能,减少对磁盘的...

    Lidar Data-Tree detection

    - **纹理图**:航空图像中的纹理特征可以帮助识别树木的特定模式。 - **高度变化**:树木通常具有较大的高度变化,这可以作为识别的一个依据。 - **法向量估计**:通过估计表面法向量,可以进一步了解树木表面的...

    Opencv RandomTree算法进行手势检测

    在计算机视觉领域,OpenCV(开源计算机视觉库)是一个强大的工具,它提供了多种机器学习算法,包括随机森林(Random Forest)中的随机树(Random Tree)算法。本项目中,我们利用OpenCV的RandomTree算法来实现手势...

    R-Tree空间索引算法的研究历程和最新进展分析

    R-Tree及其变种不仅在GIS中有着广泛应用,也在数据库系统、遥感图像处理、推荐系统等领域发挥着重要作用。 总的来说,R-Tree空间索引算法是一个持续演进的领域,不断地适应新的挑战和需求。研究人员通过深入理解R-...

Global site tag (gtag.js) - Google Analytics