⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeexpandlistener.java

📁 一款少见的用swt写的彩票软件
💻 JAVA
字号:
package com.dc.test;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import java.io.*;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.events.*;

public class TreeExpandListener {
	public static void main(String[] args) {
		new TreeExpandListener().run();
	}

	public void run() {
		Display display = new Display();
		Shell shell = new Shell(display);
		createContents(shell);
		shell.setLayout(new FillLayout());
		shell.setSize(300, 200);
		shell.setText("Tree");
		shell.open();

		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	public void createContents(Shell shell) {
		Tree tree = new Tree(shell, SWT.BORDER);
		File[] roots = File.listRoots();
		traverse(tree, roots);
		listenOnExpand(tree);
	}

	private void traverse(Tree tree, File[] roots) {
		for (File file : roots) {
			TreeItem root = new TreeItem(tree, SWT.NULL);
			root.setText(file.toString());
			root.setData(file);
			new TreeItem(root, SWT.NULL);
		}
	}

	private void listenOnExpand(Tree tree) {
		tree.addTreeListener(new TreeAdapter() {
			@Override
			public void treeExpanded(TreeEvent e) {
				TreeItem root = (TreeItem) e.item;
				TreeItem[] items = root.getItems();
				if (items.length != 1)
					return;
				if (items[0].getData() != null)
					return;
				items[0].dispose();
				traverseChildren(root);
			}

			private void traverseChildren(TreeItem root) {
				File file = (File) root.getData();
				File[] files = file.listFiles();
				if (files == null)
					return;
				for (File subFile : files) {
					TreeItem item = new TreeItem(root, SWT.NULL);
					item.setText(subFile.getName());
					item.setData(subFile);

					if (subFile.isDirectory()) {
						new TreeItem(item, SWT.NULL);
					}
				}
			}
		});
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -