原文来自: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.Expand**:展开树节点时 - **SWT.FocusIn**:控件获得焦点时 - **SWT.FocusOut**:控件失去焦点时 - **SWT.HardKeyDown**:硬件按键按下时,例如PocketPC - **SWT.HardKeyUp**:硬件按键抬起时,例如Pocket...
SWT事件处理机制是其核心特性之一,它允许开发者响应各种用户交互行为,从而实现动态和响应式的界面设计。 ### SWT事件类型及处理 #### ControlEvent:控件事件 - **监听器和适配器**:`ControlListener`和`...
8. **动态加载**: 如果节点数据较大,可以考虑异步加载,当用户展开节点时,通过JavaScript从服务器获取数据并动态添加到Tree中。 总的来说,SWT Tree提供了一种灵活的方式来展示和操作层次结构数据,通过结合CSS和...
为了在64位Java环境中使用这个库,开发人员需要确保他们的Java开发环境(JDK)也是64位的,因为32位的JDK无法识别和加载64位的SWT库。同时,由于SWT库是高度平台依赖的,因此对于不同的操作系统(如Windows、Linux、...
在SWT(Standard Widget Toolkit)中,事件处理是构建用户界面不可或缺的一部分。通过监听和响应各种用户交互,我们可以创建响应式且用户友好的应用程序。在给定的标题和描述中,我们关注的是鼠标的双击事件、键盘...
4. 良好的事件处理机制:SWT支持事件驱动编程,允许开发者响应用户的操作。 5. 跨平台:虽然SWT依赖于特定操作系统的库,但Eclipse项目提供了多个平台的版本,如Windows、Linux、Mac OS等。 在"swt-3.7.2-win32-win...
SWT事件类通常包含处理事件所需的所有信息,而监听器接口只有一个`handleEvent(Event)`方法,这个方法会接收到所有类型的事件。因此,在SWT中处理事件通常需要在`handleEvent`方法内根据事件类型进行判断。 对比三...
5. `SWT.ICON_WORKING`:显示工作或加载图标,通常在进行长时间操作时显示。 通过这些常量的组合,开发者可以创建具有不同交互特性的`MessageBox`对话框,以满足不同场景下的用户交互需求。在实际编程中,可以根据...
5. **Event和Listener**: SWT事件模型基于事件和监听器。事件是用户与GUI交互时发生的行为,如点击按钮或改变文本;监听器是注册在Widget上以响应这些事件的代码。 **SWT的主要特点** 1. **原生外观**: SWT通过...
SWT提供了一系列丰富的组件,如按钮、文本框、列表、树等,以及布局管理器,如`GridLayout`、`RowLayout`和` MigLayout`,帮助开发者组织和定位组件。此外,SWT还支持事件处理,通过实现监听器接口,可以对用户交互...
在实际开发中,SWT提供了一系列的控件,如按钮、文本框、列表、树视图等,以及布局管理器来组织这些控件。它还支持事件驱动编程模型,使得用户交互的处理变得简单。SWT相对于Java的另一GUI框架AWT(Abstract Window ...
3. SWT事件和监听器:在SWT中,事件处理是通过添加监听器到组件上实现的。例如,ButtonListener可以监听按钮的点击事件,SelectionListener可以监听多种类型的选中事件。开发者可以通过实现相应的接口或者继承特定的...
- **保存配置**:保存运行配置后,每次运行该项目时JRE都会自动加载所需的原生库。 ##### 3. 创建简单的Shell示例 为了验证SWT配置是否正确,可以通过编写一个简单的Shell程序来进行测试。以下是一个基本的Shell...
Java SWT 播放器是一种基于 Java 的图形用户界面(GUI)应用程序,它利用了 SWT(Standard Widget Toolkit)库来创建具有本地外观和感觉的用户界面。SWT 是 Eclipse 开发框架的一部分,提供了丰富的控件集,使得...
4. SWT事件处理: SWT使用事件驱动模型,当用户与界面交互时,会产生事件。开发者可以注册事件监听器来响应这些事件,实现用户界面的动态响应。 5. SWT与Eclipse IDE的结合: Eclipse作为基于SWT的IDE,提供了...
此外,SWT还提供了事件处理机制,如监听器接口,如ControlListener、MouseListener和KeyListener等,使得开发者能够对用户的行为作出反应。例如,添加一个MouseListener到Button上,就可以在按钮被点击时执行特定的...
5. SWT事件处理: SWT组件支持事件驱动编程,每个组件都有对应的事件类和监听器接口。例如,Button组件有SelectionListener,可以监听按钮的点击事件。开发者通过实现相应的监听器接口并注册到组件上,即可处理用户...
同时,SWT还支持事件驱动编程模型,用户界面的交互通过监听和处理事件来完成。 总的来说,SWT-win32-3235是SWT针对32位Windows环境的一个版本,包含了构建高性能本地UI所需的所有组件和库文件,提供了丰富的图形...
SWT事件模型基于Java的事件模型,但更加简洁和直观。通过注册监听器,如`SelectionListener`、`ModifyListener`,可以监听用户与控件的交互,并在事件发生时执行相应的处理代码。 **6. SWT与JFace** JFace是建立在...
1. **`Tree`类**:`Tree`类是SWT中表示树形控件的类,它允许你创建具有可展开/折叠节点的视图。每个节点可以有任意数量的子节点,形成一个多级的结构。你可以通过调用`Tree`的`add()`方法添加新的`TreeItem`,表示树...