Tree Example

This section illustrates you how to get the files from the available directories and create a tree.

Tree Example

Tree Example

     

This section illustrates you how to get the files from the available directories and create a tree.

SWT provides a class Tree to represent the data in the hierarchical way and TreeItem to represents the  hierarchy of tree items in a tree by adding an item to the tree.

In the given example, we are creating a tree which represents the hierarchical structure of available files in the directories. The class File performs all the operations of the files and directories. The method listRoots() provides the list of available file system roots. The method listFiles() returns an array of file paths. The method getName() returns the name of the file. In order to find whether the file is directory, we have used the method isDirectory().

The class TreeItem adds the item to the tree by the method setText() and setData(). The method getItems() returns an array of TreeItems. The method getData() returns the data of the particular file.

Here is the code of TreeExample.java

import java.io.File;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.TreeItem;

public class TreeExample {

  public static void main(String[] args) {
 int w,h;
 Display display = new Display();
 Shell shell = new Shell(display);
 shell.setText("Show Tree");
 shell.setLayout(new FillLayout());

 Tree tree = new Tree(shell, SWT.BORDER);
 File[] file = File.listRoots();
 for (int i = 0; i < file.length; i++) {
  TreeItem item = new TreeItem(tree, 0);
  item.setText(file[i].toString());
  item.setData(file[i]);
  new TreeItem(item, 0);
  }
  tree.addListener(SWT.Expand, new Listener() {
  public void handleEvent(Event event) {
 TreeItem item1 = (TreeItem) event.item;
  TreeItem[] items = item1.getItems();
  for (int i = 0; i < items.length; i++) {
  if (items[i].getData() != null)
  return;
  items[i].dispose();
  }
  File file = (File) item1.getData();
  File[] files = file.listFiles();
  if (files == null)
  return;
  for (int i = 0; i < files.length; i++) {
  TreeItem item2 = new TreeItem(item1, 0);
  item2.setText(files[i].getName());
  item2.setData(files[i]);
  if (files[i].isDirectory()) {
  new TreeItem(item2, 0);
  }
  }
  }
  });
  shell.setSize(200,250);
  shell.open();
  while (!shell.isDisposed()) {
  if (!display.readAndDispatch())
  display.sleep();
  }
  display.dispose();
  }
}

Output will be displayed as

Download Source Code