`
hz_chenwenbiao
  • 浏览: 1008182 次
  • 性别: 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();
		  }
	}

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

分享到:
评论

相关推荐

    用max和osg做的旋转树

    【标题】"用Max和osg制作的旋转树"是一个关于3D建模和动画的项目,其中结合了3ds Max和OpenSceneGraph (osg) 的技术。3ds Max是一款广泛使用的三维建模、动画和渲染软件,而OpenSceneGraph则是一个高性能的开源3D...

    链表和红黑树测试代码

    在Linux内核中,红黑树常用于实现内核对象的快速查找、插入和删除,如内存管理中的页表、VFS(虚拟文件系统)的目录结构等。 在“linux_list_rbtree”这个压缩包中,我们可以预见到包含以下内容: 1. 双向环形链表...

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

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

    初识胖树结构

    胖树网络拓扑有全胖树和半胖树两种类型: - **全胖树**:每个层级的节点都以满配的形式存在,无空闲端口,这种拓扑提供了最大化的带宽和最小的延迟。 - **半胖树**:网络中存在空闲端口,不是每个层级都完全配满,...

    虚拟现实艺术设计介绍

    虚拟现实技术,简称为VR,是从计算机技术的角度来看,它是一个由软件、硬件和参与者共同构成的人机交互环境系统。参与者能够通过多感官与计算机生成的三维世界进行互动,体验强烈的在场感和远距离在场感。 VR的核心...

    论文研究-虚拟树木建模方法的研究 .pdf

    虚拟树木建模是一种利用计算机技术模拟真实树木形态和生长过程的技术,在虚拟现实、游戏设计、环境模拟等众多领域有着广泛的应用。研究虚拟树木建模方法不仅对于增强虚拟世界的逼真度至关重要,对于植物学的研究和...

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

    虚拟表和树允许开发人员快速创建具有大量数据的表和树,并且能够有效地进行填充。它们可以解决传统表或树的初始化问题,因为它们的项需要预先创建好,从而导致初始化过程非常慢。此外,如果用户并不查看所有的项——...

    3D虚拟场景

    虚拟建模语言(如VRML、X3D)是构建这些场景的关键工具,它们允许开发者用编程的方式描述场景中的物体、动作和交互。 首先,我们要理解什么是虚拟建模语言。虚拟现实建模语言(Virtual Reality Modeling Language,...

    linux 内存管理(虚拟地址到物理地址)

    为了管理多个内存区域,内核使用链表或红黑树等数据结构将它们关联起来,以便于高效地进行地址查找、内存分配和释放等操作。当进程需要访问虚拟地址时,内核会通过页表进行翻译,找到对应的物理地址,如果物理内存...

    虚拟图书馆-上大学生参考

    虚拟图书馆是一种基于网络技术的数字化信息服务系统,它利用信息技术将分散在各处的图书、期刊、论文、多媒体资源等信息进行整合,使用户能够通过互联网访问和利用这些资源。在这个主题下,我们将深入探讨虚拟图书馆...

    vrml代码源文件虚拟教室模型

    2. **树**:VRML提供了构建3D植物模型的工具,如树,通过组合不同的几何形状和纹理来实现。例如,文件`tree1130.png`和`tree101.png`可能是树木的纹理贴图,用于给3D模型增添真实感。 3. **桌子和椅子**:这些是教室...

    虚拟磁盘程序设计(课设)

    6. **数据结构与算法**:理解如何高效地组织和访问数据,例如B树、哈希表等,对于优化虚拟磁盘的性能至关重要。 7. **虚拟化技术**:虽然这不是虚拟磁盘的基本要求,但了解虚拟化技术可以帮助你更好地理解虚拟磁盘...

    VC开发树列表

    在VC++开发中,"树列表"是一种常见的控件,它结合了树形结构和列表视图的功能,常用于展示层次化的数据。本项目提供的"VC开发树列表"旨在为开发者提供一个美观且可定制化的树列表控件,允许用户自定义颜色,提升用户...

    红黑树.源码

    它在数据结构和算法领域具有重要地位,广泛应用于数据库索引、编译器符号表、虚拟内存管理等多个场景。红黑树的主要特点是每个节点都带有颜色属性,可以是红色或黑色,通过这些颜色属性来维护树的平衡,确保了在最坏...

    vb 开发的3D虚拟城市

    在VB(Visual Basic)开发环境中,创建3D虚拟城市是一项技术含量较高的任务,涉及到图形学、用户交互和程序设计等多个方面。以下将详细介绍这个项目的关键知识点: 1. **VB编程基础**:VB是Microsoft开发的一种面向...

    VRML虚拟现实技术所有课程实例

    2. **场景图**:场景由节点树构成,根节点是WorldInfo,其余节点按照层次结构组织,形成一个图形表示的虚拟环境。 3. **颜色、纹理与材质**:VRML支持定义物体的颜色、纹理和表面特性,使得虚拟场景更加逼真。 4. ...

    AdvancedDataGrid多表头与树形表格(数据统计)

    在本文中,我们将深入探讨Adobe Flex中的AdvancedDataGrid组件,特别是在实现多表头和树形表格方面的应用,这对于数据统计和展示来说是非常重要的工具。AdvancedDataGrid是Flex中一个功能强大的组件,它允许用户以...

    Unity3D树木模型

    总之,Unity3D的树木模型,如Maple Trees Package,是游戏开发和虚拟环境构建中的重要组成部分,它们结合了艺术设计和技术实现,为用户带来了栩栩如生的视觉体验。通过理解和利用这些模型的各个组件,开发者能够提升...

    基于Java3D的虚拟漫游系统研究

    【Java3D虚拟漫游系统】是一种利用计算机图形学技术构建的三维互动环境,它允许用户在虚拟空间中自由移动、探索和交互。基于Java3D的虚拟漫游系统研究,旨在利用Java3D库的强大功能,开发出具有高度真实感和沉浸感的...

Global site tag (gtag.js) - Google Analytics