hengheng123456789

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks
树(Tree类)应用实例如下:

1、简单树
 public static void main (String [] args) {
  Display display = new Display ();
  Shell shell = new Shell (display);
  shell.setLayout(new FillLayout());
  
  final Tree tree = new Tree (shell, SWT.BORDER);
  
  for (int i=0; i<4; i++) {
   TreeItem iItem = new TreeItem (tree, 0);
   iItem.setText ("TreeItem (0) -" + i);
   for (int j=0; j<4; j++) {
    TreeItem jItem = new TreeItem (iItem, 0);
    jItem.setText ("TreeItem (1) -" + j);
    for (int k=0; k<4; k++) {
     TreeItem kItem = new TreeItem (jItem, 0);
     kItem.setText ("TreeItem (2) -" + k);
     for (int l=0; l<4; l++) {
      TreeItem lItem = new TreeItem (kItem, 0);
      lItem.setText ("TreeItem (3) -" + l);
     }
    }
   }
  }
  shell.setSize (200, 200);
  shell.open ();
  while (!shell.isDisposed()) {
   if (!display.readAndDispatch ()) display.sleep ();
  }
  display.dispose ();
 }

2、类似资源管理器的树,其中包含鼠标双击事件
 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]);//保存当前节点数据
   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 (items [i].getData () != null) return;
     items [i].dispose ();
    }
    File file = (File) root.getData ();
    File [] files = file.listFiles ();
    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()) {
      new TreeItem (item, 0);
     }
    }
   }
  });
    tree.addListener (SWT.MouseDoubleClick, new Listener () {
   public void handleEvent (Event event) {
    Point point = new Point (event.x, event.y);
    TreeItem item = tree.getItem (point);
    if (item != null) {
     System.out.println ("Mouse down: " + item);
    }
   }
  });
  //根据Tree的大小更改shell的大小
  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 ();
 }
posted on 2006-11-02 17:31 哼哼 阅读(5969) 评论(0)  编辑  收藏 所属分类: SWT

只有注册用户登录后才能发表评论。


网站导航: