📄 treeexpandlistener.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 + -