Java/GWT/Tree

Материал из Java эксперт
Перейти к: навигация, поиск

Create Tree With Pending Item

   <source lang="java">

package com.jexp.gwt.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.Tree; import com.google.gwt.user.client.ui.TreeItem; import com.google.gwt.user.client.ui.TreeListener; public class GWTClient implements EntryPoint,TreeListener {

 class PendingItem extends TreeItem {
   public PendingItem() {
     super("Please wait...");
   }
 }
 class TreeNode {
   public TreeNode[] children;
   public TreeItem item;
   public String text;
   public TreeNode(String text) {
     this.text = text;
   }
   public TreeNode(String text, TreeNode[] children) {
     this(text);
     this.children = children;
   }
 }
 TreeNode[] fTreeNode = new TreeNode[]{
   new TreeNode("A", new TreeNode[]{
     new TreeNode("B", new TreeNode[]{
       new TreeNode("1"), 
       new TreeNode("2"),
       new TreeNode("3"), 
       new TreeNode("4"),
       new TreeNode("5"),}),
     new TreeNode("B", new TreeNode[]{
       new TreeNode("B1"), 
       new TreeNode("B2"),
       new TreeNode("B3"),}),
     new TreeNode("C", new TreeNode[]{
       new TreeNode("C1"), 
       new TreeNode("C2"),}),
     new TreeNode("D", new TreeNode[]{
       new TreeNode("1"), 
       new TreeNode("2"),
       new TreeNode("3"),}),}),
   new TreeNode("AA", new TreeNode[]{
     new TreeNode("A", new TreeNode[]{
       new TreeNode("A1"), 
       new TreeNode("A2"),
       new TreeNode("A3"),
       new TreeNode("A4"),}),
     new TreeNode("B", new TreeNode[]{
       new TreeNode("1"),
       new TreeNode("2"),
       new TreeNode("3"),
       new TreeNode("4"),}),
     new TreeNode("C", new TreeNode[]{
       new TreeNode("F"),
       new TreeNode("E"),}),
     new TreeNode("G", new TreeNode[]{
       new TreeNode("C"), 
       new TreeNode("2"),
       new TreeNode("F"), 
       new TreeNode("E"),}),}),
   new TreeNode("M", new TreeNode[]{
       new TreeNode("C", new TreeNode[]{
     new TreeNode("P"), 
     new TreeNode("V"),}),}),};
 public void onModuleLoad() {
   Tree tree = new Tree();
   for (int i = 0; i < fTreeNode.length; ++i) {
     createItem(fTreeNode[i]);
     tree.addItem(fTreeNode[i].item);
   }
   tree.addTreeListener(this);
   tree.setWidth("20em");
   RootPanel.get().add(tree);
 }
 private void createItem(TreeNode TreeNode) {
   TreeNode.item = new TreeItem(TreeNode.text);
   TreeNode.item.setUserObject(TreeNode);
   if (TreeNode.children != null) {
     TreeNode.item.addItem(new PendingItem());
   }
 }
 public void onTreeItemSelected(TreeItem item) {
   Window.alert(((TreeNode) item.getUserObject()).text);
 }
 public void onTreeItemStateChanged(TreeItem item) {
   TreeItem child = item.getChild(0);
   if (child instanceof PendingItem) {
     item.removeItem(child);
     TreeNode tn = (TreeNode) item.getUserObject();
     for (int i = 0; i < tn.children.length; ++i) {
       createItem(tn.children[i]);
       item.addItem(tn.children[i].item);
     }
   }
 }
 

}


      </source>
   
  
 
  



Use TreeListener

   <source lang="java">

package com.jexp.gwt.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.Tree; import com.google.gwt.user.client.ui.TreeItem; import com.google.gwt.user.client.ui.TreeListener; public class GWTClient implements EntryPoint,TreeListener {

 class PendingItem extends TreeItem {
   public PendingItem() {
     super("Please wait...");
   }
 }
 class TreeNode {
   public TreeNode[] children;
   public TreeItem item;
   public String text;
   public TreeNode(String text) {
     this.text = text;
   }
   public TreeNode(String text, TreeNode[] children) {
     this(text);
     this.children = children;
   }
 }
 TreeNode[] fTreeNode = new TreeNode[]{
   new TreeNode("A", new TreeNode[]{
     new TreeNode("B", new TreeNode[]{
       new TreeNode("1"), 
       new TreeNode("2"),
       new TreeNode("3"), 
       new TreeNode("4"),
       new TreeNode("5"),}),
     new TreeNode("B", new TreeNode[]{
       new TreeNode("B1"), 
       new TreeNode("B2"),
       new TreeNode("B3"),}),
     new TreeNode("C", new TreeNode[]{
       new TreeNode("C1"), 
       new TreeNode("C2"),}),
     new TreeNode("D", new TreeNode[]{
       new TreeNode("1"), 
       new TreeNode("2"),
       new TreeNode("3"),}),}),
   new TreeNode("AA", new TreeNode[]{
     new TreeNode("A", new TreeNode[]{
       new TreeNode("A1"), 
       new TreeNode("A2"),
       new TreeNode("A3"),
       new TreeNode("A4"),}),
     new TreeNode("B", new TreeNode[]{
       new TreeNode("1"),
       new TreeNode("2"),
       new TreeNode("3"),
       new TreeNode("4"),}),
     new TreeNode("C", new TreeNode[]{
       new TreeNode("F"),
       new TreeNode("E"),}),
     new TreeNode("G", new TreeNode[]{
       new TreeNode("C"), 
       new TreeNode("2"),
       new TreeNode("F"), 
       new TreeNode("E"),}),}),
   new TreeNode("M", new TreeNode[]{
       new TreeNode("C", new TreeNode[]{
     new TreeNode("P"), 
     new TreeNode("V"),}),}),};
 public void onModuleLoad() {
   Tree tree = new Tree();
   for (int i = 0; i < fTreeNode.length; ++i) {
     createItem(fTreeNode[i]);
     tree.addItem(fTreeNode[i].item);
   }
   tree.addTreeListener(this);
   tree.setWidth("20em");
   RootPanel.get().add(tree);
 }
 private void createItem(TreeNode TreeNode) {
   TreeNode.item = new TreeItem(TreeNode.text);
   TreeNode.item.setUserObject(TreeNode);
   if (TreeNode.children != null) {
     TreeNode.item.addItem(new PendingItem());
   }
 }
 public void onTreeItemSelected(TreeItem item) {
   Window.alert(((TreeNode) item.getUserObject()).text);
 }
 public void onTreeItemStateChanged(TreeItem item) {
   TreeItem child = item.getChild(0);
   if (child instanceof PendingItem) {
     item.removeItem(child);
     TreeNode tn = (TreeNode) item.getUserObject();
     for (int i = 0; i < tn.children.length; ++i) {
       createItem(tn.children[i]);
       item.addItem(tn.children[i].item);
     }
   }
 }
 

}


      </source>