我想搞清楚JTREE的作用,怎么才可以实现动态,就像本论坛的一样
不过,意思以下就可以了,急救,谢谢了

解决方案 »

  1.   

    把 结点 对象,动态产生 add到树结点上就可以动态生成了吧
       一般弄数据库的时候做的比较多
      

  2.   

    package com.geostar.client.geosurfEditor;/**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2007</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.util.Vector;import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;public class jTable extends JFrame {
        JTable table = new JTable();
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;    public jTable() {
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver"); //驱动申明
                con = DriverManager.getConnection(
                        "jdbc:oracle:thin:@cdfn01:1521:cdfn01", "erpcn", "erpcn"); //建立链接
                String sql = "select * from emp"; //查询语句
                pstmt = con.prepareStatement(sql);
                rs = pstmt.executeQuery();
            } catch (Exception e) {
                System.out.println(e.toString());
            }
            ((DefaultTableModel) table.getModel()).setDataVector(getdata(),
                    gettitle());
            JScrollPane jsp = new JScrollPane(table);
            getContentPane().add(jsp);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            pack();
            setVisible(true);
        }    private Vector gettitle() {
            try {
                ResultSetMetaData rsm = rs.getMetaData();
                Vector title = new Vector();
                for (int i = 1; i <= rsm.getColumnCount(); i++) {
                    title.add(rsm.getColumnName(i));
                }
                return title;
            } catch (Exception e) {
                System.out.println(e.toString());
            }
            return new Vector();
        }    private Vector getdata() {
            try {
                ResultSetMetaData rsm = rs.getMetaData();
                Vector data = new Vector();
                while (rs.next()) {
                    Vector row = new Vector();
                    for (int i = 1; i <= rsm.getColumnCount(); i++) {
                        row.add(rs.getObject(i));
                    }
                    data.add(row);
                }
                return data;
            } catch (Exception e) {
                System.out.println(e.toString());
            }
            return new Vector();
        }    public static void main(String args[]) {
            new jTable();
        }
    }
      

  3.   

    //我是个初学者,这是我自己用JTree写的一个文件系统的一个树形结构,你可以看看
    package systemtree;import java.awt.BorderLayout;
    import java.awt.Dimension;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;
    import java.io.File;
    import javax.swing.event.TreeExpansionEvent;
    import javax.swing.event.TreeExpansionListener;
    import javax.swing.tree.*;
    import javax.swing.event.TreeWillExpandListener;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;/**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2007</p>
     *
     * <p>Company: </p>
     *
     * @author ch
     * @version 1.0
     */
    public class SystemTreeFrame extends JFrame {
        JPanel contentPane;
        BorderLayout borderLayout1 = new BorderLayout();
        JScrollPane jScrollPane1 = new JScrollPane();
        DefaultMutableTreeNode root=new DefaultMutableTreeNode("我的电脑");
        DefaultTreeModel tm=new DefaultTreeModel(root);
        JTree jtsystem=new JTree(tm);
        public SystemTreeFrame() {
            try {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }    /**
         * Component initialization.
         *
         * @throws java.lang.Exception
         */
        private void jbInit() throws Exception {
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(borderLayout1);
            setSize(new Dimension(404, 314));
            setTitle("文件系统的树型目录");
            jtsystem.addTreeSelectionListener(new
                    SystemTreeFrame_jtsystem_treeSelectionAdapter(this));
            contentPane.add(jScrollPane1, java.awt.BorderLayout.CENTER);
            File[] disk=File.listRoots();
            for(int i=0;i<disk.length;i++)
            {
                DefaultMutableTreeNode d=new DefaultMutableTreeNode((char)((int)'C'+i)+":");
              root.add(d);
              d.add(new DefaultMutableTreeNode(null));        }
            tm.reload(root);
            jtsystem.addTreeWillExpandListener(new
                    SystemTreeFrame_jtsystem_treeWillExpandAdapter(this));
            jScrollPane1.getViewport().add(jtsystem);
        }
        private void joinNode(DefaultMutableTreeNode parNode,File file)
        {
            DefaultMutableTreeNode node=new DefaultMutableTreeNode(file.getName());
            if(file.isDirectory())
            {
               node.add(new DefaultMutableTreeNode(null));
            }
            parNode.add(node);
        }    public void jtsystem_treeWillExpand(TreeExpansionEvent event) throws
                ExpandVetoException {
            TreePath tp=event.getPath();
            DefaultMutableTreeNode node=(DefaultMutableTreeNode)tp.getLastPathComponent();
            if(node.isRoot())
            {
                this.setTitle(node.toString());
                return;
            }
           node.removeAllChildren();
           Object[] objlist=tp.getPath();
           StringBuffer fpath=new StringBuffer();
           for(int i=1;i<objlist.length;i++)
           {
               fpath.append(objlist[i].toString()+"\\");
           }
           File f=new File(fpath.toString());
            File[] flist=f.listFiles();
            for(int i=0;i<flist.length;i++)
             {
                 joinNode(node,flist[i]);
             }
             tm.reload(node);
             jtsystem.setSelectionPath(tp);
             this.setTitle(fpath.toString());
        }
        public void jtsystem_valueChanged(TreeSelectionEvent e) {
            TreePath tp=e.getPath();
            Object[] objlist=tp.getPath();
            DefaultMutableTreeNode node=(DefaultMutableTreeNode)tp.getLastPathComponent();
            if(node.isRoot())
            {
                this.setTitle(node.toString());
                return;
            }
            StringBuffer fpath=new StringBuffer();
            for(int i=1;i<objlist.length;i++)
            {
                fpath.append(objlist[i].toString()+"\\");
            }
            this.setTitle(fpath.substring(0,fpath.length()-1));
        }
    }
    class SystemTreeFrame_jtsystem_treeWillExpandAdapter implements
            TreeWillExpandListener {
        private SystemTreeFrame adaptee;
        SystemTreeFrame_jtsystem_treeWillExpandAdapter(SystemTreeFrame adaptee) {
            this.adaptee = adaptee;
        }    public void treeWillExpand(TreeExpansionEvent event) {
            try {
                adaptee.jtsystem_treeWillExpand(event);
            } catch (javax.swing.tree.ExpandVetoException exception0) {
                exception0.printStackTrace();
            }
        }    public void treeWillCollapse(TreeExpansionEvent event) {
        }
    }
    class SystemTreeFrame_jtsystem_treeSelectionAdapter implements
            TreeSelectionListener {
        private SystemTreeFrame adaptee;
        SystemTreeFrame_jtsystem_treeSelectionAdapter(SystemTreeFrame adaptee) {
            this.adaptee = adaptee;
        }    public void valueChanged(TreeSelectionEvent e) {
            adaptee.jtsystem_valueChanged(e);
        }
    }