网站首页

家园论坛

老版论坛

家园博客

业界新闻

技术文档

下载中心

速查中心

图片中心

硬件资讯
上一篇:JAVA教程 第七讲 Swing用户界面设计(一) 下一篇:JAVA教程 第八讲 Java网络编程(一)
JAVA教程 第七讲 Swing用户界面设计(二)

来源: 作者: 添加日期:2005-9-4 19:19:56 点击次数:

   TableDemo frame = new TableDemo();
   frame.pack();
   frame.setVisible(true);
  }
 }

7.2.3.20 树(JTree)


    要显示一个层次关系分明的一组数据,用树状图表示能给用户一个直观而易用的感觉,JTree类如同Windows的资源管理器的左半部,通过点击可以"打开"、"关闭"文件夹,展开树状结构的图表数据。JTree也是依据M-V-C的思想来设计的,Jtree的主要功能是把数据按照树状进行显示,其数据来源于其它对象,其显示效果通常如下图所示:


              

  下面是一棵包含六个分枝点的树的例子,来演示JTree的实现过程。

  import java.awt.*;
  import java.awt.event.*;
  import javax.swing.*;
  import javax.swing.tree.*;
  class Branch{
     DefaultMutableTreeNode r;
//DefaultMutableTreeNode是树的数据结构中的通用节点,节点也可以有多个子节点。
    public Branch(String[] data){
       r=new DefaultMutableTreeNode(data[0]);
       for(int i=1;i       r.add(new DefaultMutableTreeNode(data[i]));
        //给节点r添加多个子节点

    }
    public DefaultMutableTreeNode node(){//返回节点
       return r;
    }
  }
  public class Trees extends JPanel{
    String [][]data={
            {"Colors","Red","Blue","Green"},
            {"Flavors","Tart","Sweet","Bland"},
            {"Length","Short","Medium","Long"},
            {"Volume","High","Medium","Low"},
            {"Temperature","High","Medium","Low"},
            {"Intensity","High","Medium","Low"}
            };
    static int i=0; //I用于统计按钮点击的次数
    DefaultMutableTreeNode root,child,chosen;
    JTree tree;
    DefaultTreeModel model;
    public Trees(){
       setLayout(new BorderLayout());
       root=new DefaultMutableTreeNode("root");
       //根节点进行初始化

       tree=new JTree(root);
       //树进行初始化,其数据来源是root对象

       add(new JScrollPane(tree));
       //把滚动面板添加到Trees中

       model=(DefaultTreeModel)tree.getModel();
       //获得数据对象DefaultTreeModel
       JButton test=new JButton("Press me");
       //按钮test进行初始化
       test.addActionListener(new ActionListener(){
       //按钮test注册监听器

          public void actionPerformed(ActionEvent e){
          if (i
          //按钮test点击的次数小于data的长度
              child=new Branch(data[i++]).node();
              //生成子节点

              chosen=(DefaultMutableTreeNode)
              //选择child的父节点

                  tree.getLastSelectedPathComponent();
                  if(chosen==null) chosen=root;
                  model.insertNodeInto(child,chosen,0);
                  //把child添加到chosen
          }
       }
    });
    test.setBackground(Color.blue);
    //按钮test设置背景色为蓝色

本新闻共5页,当前在第3页  1  2  3  4  5  

 
设为首页 | 加入收藏 | 业务办理 | 友情链接 | 论坛版面 | 浙ICP备07502118号 |