`
hz_chenwenbiao
  • 浏览: 998010 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

虚拟表和虚拟树(半转)

阅读更多
下面是我刚考完研,本科毕业后进入实验室,写的一些东西,今天突然看到,就发出来,做为学习笔记

import java.io.File;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;

public class VirtualTree {

	/**
	 * @param args
	 * 文件系统浏览程序。
	 *  这个程序是网上找的,他说是对付大的数据的树目录显示问题相当有效
	 */
	public static void main(String[] args) {
		
		Display display = new Display();
		Shell shell = new Shell(display);
		shell.setLayout(new FillLayout());
		
		final Tree tree = new Tree(shell, SWT.VIRTUAL | SWT.BORDER); //通过指定SWT.VIRTUAL风格创建一个虚拟树。
		  
	      //获取文件系统的顶级文件入口,并将它们作为模型数据存储在树中。
		  File[] roots = File.listRoots();//能获取电脑各盘(A:C:D:E:F:)
		  tree.setData(roots);
		  tree.addListener(SWT.SetData, new Listener() { //向对添加一个SWT.SetData监听器,每当访问item域时,该监听器负责对项目设置数据。
		   public void handleEvent(Event event) 
		   {
			    TreeItem item = (TreeItem) event.item; 
			    TreeItem parentItem = item.getParentItem(); //获取项目的父项目,父项目包含了当前的文件入口。
			    File file = null;
			    if (parentItem == null) //这种情况是TreeItem为顶级项目,所以它的文件入口是根据索引从树中获取,并且设置它的文本。项目相对于父项目的索引可以在事件的index域中找到。
			    {
				     /* root-level item */
				     File[] files = (File[]) tree.getData();
				     file = files[event.index];
				     item.setText(file.toString());//列举盘符时,要用file.toString(),不能用file.getName()
			    }
			    else //这种情况是TreeItem不是一个顶级项目,所以它的文件入口是根据索引从父项目中获取,并且设置它的文本。
			    {
				     File[] files = (File[]) parentItem.getData();
				     file = files[event.index];
				     item.setText(file.getName());
			    }
			    
			    if (file.isDirectory()) //如果项目代表一个目录,那么获取它的子文件系统入口,并且作为项目的模型数据存储在数据中。
			    {
				     File[] files = file.listFiles();
				     if (files != null) 
				     {
					      item.setData(files);
					      item.setItemCount(files.length);//设置项目子项数量。这将确保在项目旁边显示展开图标,并且当用户展开它时,能够创建正确数量的子项。
				     }
			    }
			}
		  });
		  tree.setItemCount(roots.length);
		  
		  shell.open();
		  while(!shell.isDisposed())
		  {
			  if(!display.readAndDispatch())
				  display.sleep();
		  }
	}

}
//总结
//虚拟表和虚拟树提供了一个简单的方式来按需填充控件。它将大大减少计算工作量和内在消耗,可以使界面处理大数据集时保持快速响应。 

分享到:
评论

相关推荐

    红黑树在Linux虚拟内存区域管理中的应用 (1).pdf

    红黑树在 Linux 虚拟内存区域管理中的应用主要体现在三个方面:红黑树的定义和优点、Linux 中 VMA 的相关内容、红黑树在 Linux 内核中的实现。红黑树的高效操作使其成为 Linux 内核中虚拟存储区域管理的首选算法。

    论文研究-高度场八叉树的体特征表达算法.pdf

    体特征表达对用户理解和认知虚拟环境有着至关重要的作用。当前的体特征表达算法由于存储量大且不易于在GPU中加速等问题,渲染效率低下,难以满足场景可视化的实时性需求。针对这一问题,提出了一种高效的高度场八叉...

    数据结构课程设计--动态查找表 二叉排序树

    数据结构课程设计--动态查找表 用二叉排序树实现动态查找表的虚拟数据类型

    基于SWT处理大量数据的表(Table)和树(Tree)

    虚拟表和树允许开发人员快速创建具有大量数据的表(Table)和树(Tree),并且能够有效地进行填充。本文概述了如何在SWT应用程序中使用虚拟表和树。

    基于树模型的虚拟测量算法在半导体制造中的应用

    本文将进行数据采集和预处理,从数据中选择并提取出重要特征,并使用树模型中随机森林和梯度提升树两种算法来实现W plug中对电阻率的虚拟测量。实验结果表明,本文提出的方法与传统算法相比,测量误差减少近50%,...

    HashMap源码实现红黑树添加元素和删除元素

    红黑树的应用非常广泛,例如 Epoll 实现、Java 集合中的 TreeSet 和 TreeMap、C++ STL 中的 set、map,以及 Linux 虚拟内存的管理,都是通过红黑树去实现的。 红黑树在 HashMap 中的应用可以提高查找、插入和删除...

    虚拟装配培训资料.pptx

    3、装配的基本概念 装配:按规定的技术要求,将零部件进行配合和连接,使之成为半成品或成品的工艺过程称为装配。 "地"——装配既然表达产品零部件之间的配合关系,必然存在着参照与被参照的关系。在装配设计中有一...

    按凹入表形式横向打印任意二叉树结构,即二叉树的根在屏幕的最左边,二叉树的左子树在屏幕的下边,二叉树的右子树在屏幕的上边。

    一个二叉树是由一个根节点和两个子树组成的,每个节点都含有一个数据元素和两个指针,分别指向左子树和右子树。二叉树的结构可以用递归的方式来定义,即每个节点的左子树和右子树也是二叉树。 横向打印二叉树算法 ...

    虚拟教育系统中的可视化方法

    在我们的方法中,决策树由虚拟3D树模型表示,可以清晰显示结构和分类结果。另外,随机森林由一组虚拟3D树表示,它们的位置表示决策树之间的相似性。我们还在系统中提供了几种用户交互工具。这些工具可帮助用户浏览...

    疯狂内核之——虚拟文件系统

    3.1.3 磁盘索引节点表 105 3.2 VFS接口数据结构 110 3.2.1 Ext2 超级块对象 110 3.2.2 Ext2 的索引节点对象 121 3.2.3 创建Ext2文件系统 124 3.2.4 Ext2的方法总结 126 3.3 Ext2索引节点分配 129 3.3.1 创建索引节点...

    fast-table:React,表,虚拟化,固定列,固定头,排序,树表

    多数据快速渲染,虚拟渲染 固定表头 固定列 表头排序 表头分组 树形数据展示 固定行至顶部或者底部 子表格订制 表头自由排序 表格数据选择 API Table Props props describe type default value show bordered ...

    数据结构(C#语言描述)-陈广编著中的几个演示程序

    虚拟线性表 虚拟循环队列 虚拟二叉树 虚拟二叉查找树 虚拟哈希表

    计算机软件及应用虚拟装配设计PPT课件.pptx

    4 1、装配的基本概念 装配:按规定的技术要求,将零部件进行配合和连接,使之成为半成品或成品的工艺过程称为装配。 "地"——装配既然表达产品零部件之间的配合关系,必然存在着参照与被参照的关系。在装配设计中有...

    论文研究-利用辐射度模拟虚拟枇杷果园冠层光分布.pdf

    以枇杷为例,采用参数化单树建模工具ParaTree构建单株三维枇杷冠层模型,基于反距离加权插值法IDW建立地形表面模型;根据枇杷果园的树木分布情况,把单株木模型“种植”于地形表面,形成虚拟枇杷果园场景。整个三维...

    基于ssm+Vue的树品种资源数据管理系统(源码+部署说明+系统介绍+数据库).zip

    本资源是一个基于SSM+Vue的树品种资源数据管理系统,该系统采用了Java代码和前端页面进行开发。源码包含了项目的基本框架、数据库表结构以及前端页面。部署说明详细指导了如何将项目部署到服务器上运行。 该树品种...

    sqlserver 树形结构查询单表实例代码

    WITH TREE AS( --创建一个虚拟表 SELECT * FROM sys_organiz --指定需要查询的表 WHERE organize_code = '100000' -- 指定父节点条件 UNION ALL --联合查询 SELECT sys_organiz.* FROM sys_organiz,TREE WHERE ...

    增强现实系统中基于先验知识的虚拟抓取识别

    通过对大量实验数据 的分析,提取关键数据进行 处理并 完成决策树的构建,通过基 于一种数据拟合 的碰撞检测方法 ,真正实现了真实 手对 虚拟对象的抓取识别 。实验结 果表 明该算法识别率高 、 实时性好 、交互自然...

    linux的VMALLOC虚拟地址空间管理

    linux内核使用vm_struct结构体表示映射的地址空间,并且被组织在链表vmlist中,同时为了快速搜索VMA中一块连续的虚拟地址空间采用了红黑树进行管理,另外根据红黑树的层次结构将红黑树的各节点信息保存在vmap_area_...

    伟大的虚拟DOM到真实DOM的过程

    虚拟DOM简而言之就是,用JS去按照DOM结构来实现的树形结构对象,也就是一个JS对象而已。那么什么样的对象才能比较匹配的上dom结构呢?来看一下如下图所示的dom结构 leftSpan rightSpan 图片旁边的span ...

    常规表:常规库,用于异步和虚拟数据模型

    使用它来构建数据网格,电子表格,数据透视表,文件树,或在任何需要的时间: 只是一个普通的<table> 。 虚拟渲染以实现高性能。 async数据模型处理慢速,远程,巨大和/或分布式后端。 易于样式设置,可与任何...

Global site tag (gtag.js) - Google Analytics