TreePath得到每一级路径,然后合并起来不就行了?如果还没理解我帮你写

解决方案 »

  1.   

    public class TreeNode extends JPanel
    {
            protected JTree m_tree;
            protected JTextField m_display;
            protected DefaultMutableTreeNode nodeZhuangxiang,nodejieXiang,nodeSearch,nodeSetting,
                                             nodeWaittingTest,nodeWaittingPacking,nodeWaittingRepair,userManagement,
                                             nodejieXiangBySN,nodejieXiangByBox,
                                             search,search1;
            public TreeNode()
            {
                    DefaultMutableTreeNode top=new DefaultMutableTreeNode(new OidNode(1000,"RMA"));
                    DefaultMutableTreeNode parent=top;                nodeZhuangxiang=new DefaultMutableTreeNode(new OidNode(0,"裝箱"));
                    nodeWaittingTest=new DefaultMutableTreeNode(new OidNode(01,"待測庫"));
                    nodeWaittingPacking=new DefaultMutableTreeNode(new OidNode(02,"包裝庫"));
                    nodeWaittingRepair=new DefaultMutableTreeNode(new OidNode(03,"待修庫"));                nodeZhuangxiang.add(nodeWaittingTest);
                    nodeZhuangxiang.add(nodeWaittingPacking);
                    nodeZhuangxiang.add(nodeWaittingRepair);
                    parent.add(nodeZhuangxiang);                nodejieXiang=new DefaultMutableTreeNode(new OidNode(1,"解箱"));
                    nodejieXiangBySN=new DefaultMutableTreeNode(new OidNode(11,"按序號解箱"));
                    nodejieXiangByBox=new DefaultMutableTreeNode(new OidNode(12,"按箱號解箱"));
                    nodejieXiang.add(nodejieXiangBySN);
                    nodejieXiang.add(nodejieXiangByBox);
                    parent.add(nodejieXiang);                nodeSearch=new DefaultMutableTreeNode(new OidNode(2,"查詢"));
                    search=new DefaultMutableTreeNode(new OidNode(21,"查詢"));
                    search1=new DefaultMutableTreeNode(new OidNode(22,"查詢RMA NO"));
                    nodeSearch.add(search);
                    nodeSearch.add(search1);
                    parent.add(nodeSearch);
                    
                    nodeSetting=new DefaultMutableTreeNode(new OidNode(3,"設置"));
    userManagement = new DefaultMutableTreeNode(new OidNode(31,"用戶管理"));
    nodeSetting.add(userManagement);
    parent.add(nodeSetting);

                    m_tree=new JTree(top);
                    m_tree.setShowsRootHandles(true);
                    m_tree.putClientProperty("JTree.linestyle","Angled");
                    m_tree.setEditable(false);
                    this.add( m_tree,BorderLayout.CENTER);  ////////////////////在?里加一行
                    //JScrollPane s=new JScrollPane(m_tree);                setSize(400,300);
                    setVisible(true);
            }
            public JTree getTree()
            {
             return this.m_tree;
            }
    }
    tree.getTree().addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e){
    tvwTreeView_mouseClicked(e);
    }
    });
    private void tvwTreeView_mouseClicked(MouseEvent e)
    {
    try
    {
    TreePath pa=tree.getTree().getPathForLocation(e.getX(),e.getY());
    if(pa==null)return;
    Object[] nodes = pa.getPath();
    String oid="";
    for(int k=0;k<nodes.length;k++)
    {
    DefaultMutableTreeNode node =(DefaultMutableTreeNode)nodes[k];
    OidNode nd = (OidNode)node.getUserObject();
    oid+="."+nd.getId();
    }
    if(oid.equals(".1000.2.21"))
    {
    bcp=new BarCodePanel();
    js.setRightComponent(bcp);
    //JOptionPane.showMessageDialog(null,"輸入的目錄名不能為空","Error",JOptionPane.ERROR_MESSAGE);
    }
    else if(oid.equals(".1000.0.1"))
    {
    try
    {
    rs=conManager.getResultSet(con,"1");
    wt=new waitTest(rs);
    js.setRightComponent(wt);
    }catch(Exception ex){
    System.out.println(ex.toString());
    }
    }
    else if(oid.equals(".1000.0.2"))
    {
    try
    {
    rs=conManager.getResultSet(con,"3");
    wP=new waitPacking(rs);
    js.setRightComponent(wP);
    }catch(Exception ex){
    System.out.println(ex.toString());
    }
    }
    else if(oid.equals(".1000.0.3"))
    {
    try
    {
    rs=conManager.getResultSet(con,"2");
    wR=new waitRepair(rs);
    js.setRightComponent(wR);
    }catch(Exception ex){
    System.out.println(ex.toString());
    }
    }
    else if(oid.equals(".1000.3.31"))
    {
    try
    {
    uM = new UserManagement();
    js.setRightComponent(uM);
    }catch(Exception ex){
    System.out.println(ex.toString());
    }
    }
    else if(oid.equals(".1000.2.22"))
    {
    swe=new SearchWithExcel();
    js.setRightComponent(swe);
    }
    else
    {
    js.setRightComponent(la1);
    }
    la1.setText(oid);
    }catch(Exception ex){
    System.out.println(ex.toString());
    }    
    }你參考一下點擊不同的葉子節點時  顯示不同的panel
      

  2.   

    其中
    tree.getTree().addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e){
    tvwTreeView_mouseClicked(e);
    }
    });
    是點擊葉子節點時候的響應事件然後根據不懂的id 來決定做神麼
      

  3.   

    public class TreeNode extends JPanel
    {
            protected JTree m_tree;
            protected JTextField m_display;
            protected DefaultMutableTreeNode nodeZhuangxiang,nodejieXiang,nodeSearch,nodeSetting,
                                             nodeWaittingTest,nodeWaittingPacking,nodeWaittingRepair,userManagement,
                                             nodejieXiangBySN,nodejieXiangByBox,
                                             search,search1;
            public TreeNode()
            {
                    DefaultMutableTreeNode top=new DefaultMutableTreeNode(new OidNode(1000,"RMA"));
                    DefaultMutableTreeNode parent=top;                nodeZhuangxiang=new DefaultMutableTreeNode(new OidNode(0,"裝箱"));
                    nodeWaittingTest=new DefaultMutableTreeNode(new OidNode(01,"待測庫"));
                    nodeWaittingPacking=new DefaultMutableTreeNode(new OidNode(02,"包裝庫"));
                    nodeWaittingRepair=new DefaultMutableTreeNode(new OidNode(03,"待修庫"));                nodeZhuangxiang.add(nodeWaittingTest);
                    nodeZhuangxiang.add(nodeWaittingPacking);
                    nodeZhuangxiang.add(nodeWaittingRepair);
                    parent.add(nodeZhuangxiang);                nodejieXiang=new DefaultMutableTreeNode(new OidNode(1,"解箱"));
                    nodejieXiangBySN=new DefaultMutableTreeNode(new OidNode(11,"按序號解箱"));
                    nodejieXiangByBox=new DefaultMutableTreeNode(new OidNode(12,"按箱號解箱"));
                    nodejieXiang.add(nodejieXiangBySN);
                    nodejieXiang.add(nodejieXiangByBox);
                    parent.add(nodejieXiang);                nodeSearch=new DefaultMutableTreeNode(new OidNode(2,"查詢"));
                    search=new DefaultMutableTreeNode(new OidNode(21,"查詢"));
                    search1=new DefaultMutableTreeNode(new OidNode(22,"查詢RMA NO"));
                    nodeSearch.add(search);
                    nodeSearch.add(search1);
                    parent.add(nodeSearch);
                    
                    nodeSetting=new DefaultMutableTreeNode(new OidNode(3,"設置"));
    userManagement = new DefaultMutableTreeNode(new OidNode(31,"用戶管理"));
    nodeSetting.add(userManagement);
    parent.add(nodeSetting);

                    m_tree=new JTree(top);
                    m_tree.setShowsRootHandles(true);
                    m_tree.putClientProperty("JTree.linestyle","Angled");
                    m_tree.setEditable(false);
                    this.add( m_tree,BorderLayout.CENTER);  ////////////////////在?里加一行
                    //JScrollPane s=new JScrollPane(m_tree);                setSize(400,300);
                    setVisible(true);
            }
            public JTree getTree()
            {
             return this.m_tree;
            }
    }
    這個是一個類   用來表示整個數的 它繼承了JPanel