MyException - 我的异常网
当前位置:我的异常网» J2SE » 如何通过jtree叶子结点的TreePath得到叶子的ID

如何通过jtree叶子结点的TreePath得到叶子的ID

www.MyException.Cn  网友分享于:2013-04-26  浏览:313次
怎么通过jtree叶子结点的TreePath得到叶子的ID
Java code

package com.MyQQ.test;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;

/**
 * @author 
 * 2012-4-9
 */
public class ShowFriend {
    
    JFrame  showfriend=new JFrame();
    String  string;
    
    
    
public  void  init(String  string){
        //public  void  init(){
        showfriend.setBounds(800, 50, 290,716);
        showfriend.setBackground(Color.blue);
        JPanel  p1=new  JPanel();
        
        
        JLabel  label1=new  JLabel();
        JLabel  label2=new  JLabel();
        JLabel  label3=new  JLabel();
        JLabel  label4=new  JLabel();
        
        JTextField  tf1=new  JTextField(15);
        
        JTextField  tf2=new  JTextField(25);
        JButton  btn1=new  JButton();
        //让label2显示网名
            String  strNick;
          strNick=new QQDB().showNick(string);
            label2.setText( strNick);
        
        
        tf1.setText("编辑个性签名");
        tf2.setText("请输入你要查询的内容");
        label1.setIcon(new  ImageIcon(".\\src\\image\\headlog.jpg"));
        label3.setIcon(new  ImageIcon(".\\src\\image\\weather.png"));
        label4.setIcon(new  ImageIcon(".\\src\\image\\QQZone.png"));
        btn1.setIcon(new ImageIcon(".\\src\\image\\search.png"));
        
        //想要在这个panel里用setbounds必须先把p1的布局设置空
        //各个组件如果都在一个面板中以左上角为起始点
        //为各个组件设置布局
        p1.setLayout(null);
        label1.setBounds(0, 16, 79, 81);
        label1.setBorder(null);
        label2.setBounds(91,16, 124, 20);
        tf1.setBounds(91, 45, 128, 20);
        label3.setBounds(225, 16, 56, 54);
        label4.setBounds(91, 76, 189, 22);
        tf2.setBounds(0, 106, 240, 25);
        btn1.setBounds(243, 106, 32, 22);
        btn1.setBorder(null);
        btn1.addActionListener(new  MyAction());
        
        
        //JTabbedPane允许用户通过单击具有给定标题和/或图标的选项卡,在一组组件之间进行切换
        
        JTabbedPane  tPane=new  JTabbedPane(JTabbedPane.TOP);
        
        tPane.setBounds(0, 126, 290, 543);
        
           String  str3=new QQDB().getTableName(string);
        
          //创建树,设置node为这个树的根结点,并且名字为root
        System.out.println("1");
          final DefaultMutableTreeNode  node=new  DefaultMutableTreeNode("root");
          final JTree   tree=new  JTree(node);
            System.out.println("2");
          //调用数据库里面的添加子节点的方法添加节点到根下面
          new QQDB().createNode(node, "0",str3);
          System.out.println("4");
        //把父子结点之间的连线去掉
          tree.putClientProperty("JTree.lineStyle", "None");
          //tree.setRootVisible(false);
          //tree.putClientProperty("JTree.lineStyle", "Angled"); 用来保留连线,其实默认值也是保留连线的
          //tree.setShowsRootHandles(true);  用来添加把手
          //tree.setRootVisible(false);
          
          
    
        //JScrollPane 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口
        JScrollPane  jsp1=new  JScrollPane(tree);
        JScrollPane  jsp2=new  JScrollPane();
        JScrollPane  jsp3=new  JScrollPane();
        JScrollPane  jsp4=new  JScrollPane();
        JScrollPane  jsp5=new  JScrollPane();
        
        
        //添加jscrollpanel并且为它们添加图标
        tPane.addTab(null,new ImageIcon(".\\src\\image\\1.jpg"),jsp1);
        tPane.addTab(null,new ImageIcon(".\\src\\image\\2.jpg"),jsp2);
        tPane.addTab(null,new ImageIcon(".\\src\\image\\3.jpg"),jsp3);
        tPane.addTab(null,new ImageIcon(".\\src\\image\\4.jpg"),jsp4);
        tPane.addTab(null,new ImageIcon(".\\src\\image\\5.jpg"),jsp5);
        tPane.setBorder(null);
        jsp1.setBorder(null);
        jsp2.setBorder(null);
        jsp3.setBorder(null);
        jsp4.setBorder(null);
        jsp5.setBorder(null);
        
        
        MouseListener ml = new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                int selRow = tree.getRowForLocation(e.getX(), e.getY());
                TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
                if(selRow != -1) {
                    if(e.getClickCount() == 1) {
                        mySingleClick(selRow, selPath);
                    }
                    else if(e.getClickCount() == 2) {
                        myDoubleClick(selRow, selPath);
                        
                    }
                }
            }

            private void myDoubleClick(int selRow, TreePath selPath) {
                //判断是不是最后的节点,用路径值看是不是数据库里面要求的第三级
                if (selPath.getPathCount()==3) 
                {
                    


???????????这里怎么拿到叶子的ID呢,现在可以拿到的只是name
                    //把当前节点的Id传递进去
                    new DialogJFrame();
                    //selPath.getLastPathComponent()得到的是节点name,通过这个name去查ID
                    System.out.println(selPath.getLastPathComponent());
                    System.out.println(selPath);
                    System.out.println("--------------");
                
            }else {
                    //打开下面的子节点,不用写
                
                    
            }
                
            }

            private void mySingleClick(int selRow, TreePath selPath) {
                
            }
        };
        tree.addMouseListener(ml);
        
        
         
        
        //p1.setBackground(Color.BLUE);
        p1.add(label1);
        p1.add(label2);
        p1.add(label3);
        p1.add(label4);
        p1.add(tf1);
        p1.add(tf2);
        p1.add(btn1);
        p1.add(tPane);
        
        showfriend.add(p1);
        
        showfriend.setVisible(true);
        showfriend.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        
    }
    //public static void main(String[] args) {
    
     public void showfriend(String str){
            this.string=str;
            //为了显示网名,我们把ID一直传下去,便于数据库的查询
            init(string);
            //new ShowFriend();
        }
}

//打开网页进行搜索
class   MyAction   implements  ActionListener{

    public void actionPerformed(ActionEvent e) {
         try {
               Process process = Runtime.getRuntime().exec("explorer http://www.baidu.com");
              } catch (IOException e3) {
             e3.printStackTrace();
              }
             }
        
    }
    



数据库操作如下


    //创建树遍历表里面的节点
    
    public void createNode(DefaultMutableTreeNode parent, String ParentId,String   string){
    
            try {
                          
                 this.str1=string;
                 
                 
                if (str1.equals("adminfriend")) {
                    DefaultMutableTreeNode  temp=null;
                    
                    String  sql="select  friendId,name,ParentId  from  adminfriend  where  ParentID='" + ParentId + "'"; 
                
                    stmt=conn.createStatement();
                    res=stmt.executeQuery(sql);
        
            //定义光标位置    
                int i=0;
                
                while (res.next()) {
                

                    i++;
                   temp=new DefaultMutableTreeNode(res.getString("name"));
                   parent.add(temp);
                   createNode(temp, res.getString("friendId"),string);
                   res=stmt.executeQuery(sql);
                   res.relative(i);
                    
                }
            }if (string.equals("rootfriend")) {
                DefaultMutableTreeNode  temp=null;
                
                String  sql="select  friendId,name,ParentId  from  rootfriend  where  ParentID='" + ParentId + "'"; 
            
                stmt=conn.createStatement();
                res=stmt.executeQuery(sql);
            
            
        
        //定义光标位置    
            int i=0;
            
            while (res.next()) {
            

                i++;
               temp=new DefaultMutableTreeNode(res.getString("name"));
               parent.add(temp);
               createNode(temp, res.getString("friendId"),string);
               res=stmt.executeQuery(sql);
               res.relative(i);
                
            }
            }
                
            
                
            } catch (Exception e) {
                e.printStackTrace();
            }
            

                
                
            }

数据库如图


文章评论

10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
我是如何打败拖延症的
我是如何打败拖延症的
Java程序员必看电影
Java程序员必看电影
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
为什么程序员都是夜猫子
为什么程序员都是夜猫子
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员必看的十大电影
程序员必看的十大电影
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
中美印日四国程序员比较
中美印日四国程序员比较
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
编程语言是女人
编程语言是女人
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
旅行,写作,编程
旅行,写作,编程
老程序员的下场
老程序员的下场
那些争议最大的编程观点
那些争议最大的编程观点
如何成为一名黑客
如何成为一名黑客
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
我的丈夫是个程序员
我的丈夫是个程序员
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
一个程序员的时间管理
一个程序员的时间管理
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
鲜为人知的编程真相
鲜为人知的编程真相
10个调试和排错的小建议
10个调试和排错的小建议
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
代码女神横空出世
代码女神横空出世
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
 程序员的样子
程序员的样子
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
程序员和编码员之间的区别
程序员和编码员之间的区别
漫画:程序员的工作
漫画:程序员的工作
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
每天工作4小时的程序员
每天工作4小时的程序员
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有