`

SWT 树的展开事件,懒加载

 
阅读更多

原文来自:Snippet8

SWT中的树可以利用SWT.Expand事件实现懒加载。

 

public class Snippet8 {

	public static void main (String [] args) {
		final Display display = new Display ();
		final Shell shell = new Shell (display);
		shell.setText ("Lazy Tree");
		shell.setLayout (new FillLayout ());
		
		final Tree tree = new Tree (shell, SWT.BORDER);
		File [] roots = File.listRoots ();
		for (int i=0; i<roots.length; i++) {
			TreeItem root = new TreeItem (tree, 0);
			root.setText(roots[i].toString());
			root.setData(roots[i]);
			
			// display '+' default.
			new TreeItem(root, 0);
		}
		tree.addListener(SWT.Expand, new Listener () {
			public void handleEvent (final Event event) {
				final TreeItem root = (TreeItem) event.item;
				TreeItem[] items = root.getItems ();
				for(int i= 0; i<items.length; i++) {
					// if have added children for the item, just return.
					if(items[i].getData() != null)
						return;
					items[i].dispose();
				}
				
				File file = (File) root.getData();
				File[] files = file.listFiles();
				
				// disc return
				if(files == null) return;
				for(int i= 0; i<files.length; i++) {
					TreeItem item = new TreeItem(root, 0);
					item.setText(files[i].getName());
					item.setData(files[i]);
					if(files[i].isDirectory()) {
						// display '+' only for directory.
						new TreeItem(item, 0);
					}
				}
			}
		});

		Point size = tree.computeSize(300, SWT.DEFAULT);
		int width = Math.max(300, size.x);
		int height = Math.max(300, size.y);
		shell.setSize (shell.computeSize (width, height));
		shell.open ();
		while (!shell.isDisposed ()) {
			if (!display.readAndDispatch ()) display.sleep ();
		}
		display.dispose ();
	}
}
保证根节点的+图像 写道
// display '+' default.
new TreeItem(root, 0);

 

不重复加载 写道
// if have added children for the item, just return.
if(items[i].getData() != null)
return;

 

 

 
  • 大小: 4.5 KB
分享到:
评论

相关推荐

    SWT JFace 按键、事件、监听

    - **SWT.Expand**:展开树节点时 - **SWT.FocusIn**:控件获得焦点时 - **SWT.FocusOut**:控件失去焦点时 - **SWT.HardKeyDown**:硬件按键按下时,例如PocketPC - **SWT.HardKeyUp**:硬件按键抬起时,例如Pocket...

    SWT事件一览表

    SWT事件处理机制是其核心特性之一,它允许开发者响应各种用户交互行为,从而实现动态和响应式的界面设计。 ### SWT事件类型及处理 #### ControlEvent:控件事件 - **监听器和适配器**:`ControlListener`和`...

    SWT Tree 完整的树例子源码

    8. **动态加载**: 如果节点数据较大,可以考虑异步加载,当用户展开节点时,通过JavaScript从服务器获取数据并动态添加到Tree中。 总的来说,SWT Tree提供了一种灵活的方式来展示和操作层次结构数据,通过结合CSS和...

    swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位

    为了在64位Java环境中使用这个库,开发人员需要确保他们的Java开发环境(JDK)也是64位的,因为32位的JDK无法识别和加载64位的SWT库。同时,由于SWT库是高度平台依赖的,因此对于不同的操作系统(如Windows、Linux、...

    swt事件处理的编码实现

    在SWT(Standard Widget Toolkit)中,事件处理是构建用户界面不可或缺的一部分。通过监听和响应各种用户交互,我们可以创建响应式且用户友好的应用程序。在给定的标题和描述中,我们关注的是鼠标的双击事件、键盘...

    SWT_AWT_Swing事件处理机制

    SWT事件类通常包含处理事件所需的所有信息,而监听器接口只有一个`handleEvent(Event)`方法,这个方法会接收到所有类型的事件。因此,在SWT中处理事件通常需要在`handleEvent`方法内根据事件类型进行判断。 对比三...

    SWT 弹出对话框 可以选择的图标种类

    5. `SWT.ICON_WORKING`:显示工作或加载图标,通常在进行长时间操作时显示。 通过这些常量的组合,开发者可以创建具有不同交互特性的`MessageBox`对话框,以满足不同场景下的用户交互需求。在实际编程中,可以根据...

    swt工具文档 swt工具文档

    5. **Event和Listener**: SWT事件模型基于事件和监听器。事件是用户与GUI交互时发生的行为,如点击按钮或改变文本;监听器是注册在Widget上以响应这些事件的代码。 **SWT的主要特点** 1. **原生外观**: SWT通过...

    swt教程 有关SWT怎么应用

    SWT提供了一系列丰富的组件,如按钮、文本框、列表、树等,以及布局管理器,如`GridLayout`、`RowLayout`和` MigLayout`,帮助开发者组织和定位组件。此外,SWT还支持事件处理,通过实现监听器接口,可以对用户交互...

    swt-api swt DOC

    在实际开发中,SWT提供了一系列的控件,如按钮、文本框、列表、树视图等,以及布局管理器来组织这些控件。它还支持事件驱动编程模型,使得用户交互的处理变得简单。SWT相对于Java的另一GUI框架AWT(Abstract Window ...

    SWT源码 swt.jar

    4. 良好的事件处理机制:SWT支持事件驱动编程,允许开发者响应用户的操作。 5. 跨平台:虽然SWT依赖于特定操作系统的库,但Eclipse项目提供了多个平台的版本,如Windows、Linux、Mac OS等。 在"swt-3.7.2-win32-win...

    swt 监控代码资料

    3. SWT事件和监听器:在SWT中,事件处理是通过添加监听器到组件上实现的。例如,ButtonListener可以监听按钮的点击事件,SelectionListener可以监听多种类型的选中事件。开发者可以通过实现相应的接口或者继承特定的...

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    - **保存配置**:保存运行配置后,每次运行该项目时JRE都会自动加载所需的原生库。 ##### 3. 创建简单的Shell示例 为了验证SWT配置是否正确,可以通过编写一个简单的Shell程序来进行测试。以下是一个基本的Shell...

    java swt播放器

    Java SWT 播放器是一种基于 Java 的图形用户界面(GUI)应用程序,它利用了 SWT(Standard Widget Toolkit)库来创建具有本地外观和感觉的用户界面。SWT 是 Eclipse 开发框架的一部分,提供了丰富的控件集,使得...

    JAVA swt 开发第二部分

    4. SWT事件处理: SWT使用事件驱动模型,当用户与界面交互时,会产生事件。开发者可以注册事件监听器来响应这些事件,实现用户界面的动态响应。 5. SWT与Eclipse IDE的结合: Eclipse作为基于SWT的IDE,提供了...

    SWT插件中文教程SWT常用方法

    此外,SWT还提供了事件处理机制,如监听器接口,如ControlListener、MouseListener和KeyListener等,使得开发者能够对用户的行为作出反应。例如,添加一个MouseListener到Button上,就可以在按钮被点击时执行特定的...

    SWT开发教程1

    5. SWT事件处理: SWT组件支持事件驱动编程,每个组件都有对应的事件类和监听器接口。例如,Button组件有SelectionListener,可以监听按钮的点击事件。开发者通过实现相应的监听器接口并注册到组件上,即可处理用户...

    swt-win32-3235

    同时,SWT还支持事件驱动编程模型,用户界面的交互通过监听和处理事件来完成。 总的来说,SWT-win32-3235是SWT针对32位Windows环境的一个版本,包含了构建高性能本地UI所需的所有组件和库文件,提供了丰富的图形...

    SWT扩展

    SWT事件模型基于Java的事件模型,但更加简洁和直观。通过注册监听器,如`SelectionListener`、`ModifyListener`,可以监听用户与控件的交互,并在事件发生时执行相应的处理代码。 **6. SWT与JFace** JFace是建立在...

    swt table 实现换行

    根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...

Global site tag (gtag.js) - Google Analytics