存储的应该是[[[ages]name]authos],就是从ages到root的路径(如果authos是root的话)

解决方案 »

  1.   

    paths[]它会存储什么路径?这个路径是什么?
    不就是你选择的路径path吗,path[]应该是你选取的多个路径的path吧,
    不是很懂,帮你up一下
      

  2.   

    public void valueChanged(TreeSelectionEvent e)
    {
    TreePath[] paths=dbTree.getSelectionPaths();
    if(paths==null)
    return;
    boolean tableSelected=false;
    String column;
    String table;
    String columnsParam=null;
    String tableParam=null;
    String message=null;
    for(int j=0;j<paths.length;j++)
    {
    switch(paths[j].getPathCount())
    {
    case 2:那for(int j=0;j<paths.length;j++)  此时的paths.length是多少?还是以ages为例!
      

  3.   

    保存的是一条从根节点到你选择的节点的完整路径.
    TreePath[0]是根节点,TreePath[TreePath.lenght-1]是你点选的节点.
    保存的类型是树中的节点对象. 
    paths.length是根节点到点选的节点的个数
      

  4.   

    paths[j].getPathCount())  那此方法和下面的switch不就把从根接点到我选中的节点之间的所有节点都运行了下面的分支语句吗?下面的代码我没打出来,下面的分支是把他们从数据库中取出来。
    public void valueChanged(TreeSelectionEvent e)
    {
    TreePath[] paths=dbTree.getSelectionPaths();
    if(paths==null)
    return;
    boolean tableSelected=false;
    String column;
    String table;
    String columnsParam=null;
    String tableParam=null;
    String message=null;
    for(int j=0;j<paths.length;j++)
    {
    switch(paths[j].getPathCount())
    {
    case 2:
    tableParam=(String)(((DefaultMutableTreeNode)(paths[j].getPathComponent(1))).getUserObject());
    columnsParam="*";
    tableSelected=true;
    message="Complete "+tableParam+" table displayed";
    break;
    case 3:
    table=(String)(((DefaultMutableTreeNode)(paths[j].getPathComponent(1))).getUserObject());
    if(tableParam==null)
    tableParam=table;
    else if(tableParam!=table)
    break;
    column=(String)(((DefaultMutableTreeNode)(paths[j].getPathComponent(2))).getUserObject());
    if(columnsParam==null)
    columnsParam=column;
    else
    columnsParam+=","+column;
    message=columnsParam+" displayed from "+tableParam+" table.";
    break;
    }
    if(tableSelected)
    break;
    }
    try
    {
    tableModel.setResultSet(statement.executeQuery("select "+columnsParam+" from "+tableParam));
    tablePane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.darkGray),tableParam,TitledBorder.CENTER,TitledBorder.DEFAULT_POSITION));
    }
    catch(SQLException sqle)
    {
    message="Slection event error\n"+sqle.getMessage();
    System.err.println(message);
    }
    if(message!=null)
    status.setText(message);
    }
      

  5.   

    这是书中的程序,我看过
    按照你的数据库,运行后树如下:
    数据库A
      |
        表authos--+--表authos字段1
      |        +--表authos字段2
      表name----+--表name字段1
        |         +--表name字段2
        表ages----
        |
        表emali---
    这些表和字段类型都是节点,你说的语句:TreePath[] paths=dbTree.getSelectionPaths();
    paths数组保存的是所先把节点的路径,比如:
    表authos的 paths = {库A,表authos};
    表authos字段1的 paths = {库A,表authos,表authos字段1};
    表authos字段2的 paths = {库A,表authos,表authos字段2};
    其它节点的以此为例。这个程序还有以下两个地方需要注意:
    1、case 2 的话是表示点击了表;case 3 的话昌表示点击了字段
    2、(paths[j].getPathComponent(1))这是是取paths数组里面的元素 
      

  6.   

    那当我选中了AGES表时,这时候paths.length是多少?
      

  7.   

    上面已经列出来了:
    表authos的 paths = {库A,表authos};
    表authos字段1的 paths = {库A,表authos,表authos字段1};AGES表的道理和authos一样啊表是2,字段是3,这是求数组的长度啊