我是用tree将数据库中所查到的数据遍历出来,
生成树的代码:ArrayList Users=cm.getUsers(UserID);//得到结果集
    for(int i=0;i<Users.size();i++){
     UserBean ub=(UserBean)Users.get(i);
     DefaultMutableTreeNode Levels = new DefaultMutableTreeNode(ub.getUserName());
allTreeNodeNameList.add(ub.getUserName());
node.add(Levels);//node之前已经定义:DefaultMutableTreeNode node = new DefaultMutableTreeNode("分类");
}这样就能将查出来的UserName遍历成一个一层的树。
现在遇到一个问题就是:
从数据库里查到的是两个字段如:UserID与UserName。
我怎么也得到UserID呀?我查文档有个:DefaultMutableTreeNode(Object userObject) ,就是说节点中可以插入对象,我也试了下:ArrayList Users=cm.getUsers(UserID);//得到结果集
    for(int i=0;i<Users.size();i++){
     UserBean ub=(UserBean)Users.get(i);
     DefaultMutableTreeNode Levels = new DefaultMutableTreeNode(ub);
allTreeNodeNameList.add(ub);
node.add(Levels);
}在获取的时候我这么写的:DefaultMutableTreeNode SelectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
UserBean ub= (UserBean)SelectedNode.getUserObject();
System.out.println("用户名:"+ub.getUserName());
System.out.println("用户ID:"+ub.getUserID());这样两个都能输出,说明获取成功了,但出现问题就是构造的树都显示成manage.UserBean@1d05c81
怎么才能把显示的也变成UserName的内容呀?

解决方案 »

  1.   

    重写UserBean的toString()方法public String toString() {
        return username;
    }
      

  2.   

    还没用过Jtree的功能,它一般用于什么操作的?遍历数据库中的数据?
      

  3.   

    重写UserBean的toString()方法应该也是可以实现的,然后在取出来的时候先强制转换成UserBean类,然后就能取出来了,或者也可以写一个DefaultMutableTreeNode的子类,然后在里面加一个ID的属性,每次取到这个node就能同时取到ID了。
      

  4.   

    问题解决了
    方法和willkinson_wang 说的差不多,但不是重写UserBean的toString()方法。
    我是写了一个DefaultMutableTreeNode的子类,继承DefaultMutableTreeNode,里面加的UserName和UserID的属性和get()、set()方法,把代码贴出来://继承DefaultMutableTreeNode的bean
    class NodeBean extends DefaultMutableTreeNode {
    public NodeBean(Object userObject){//这里重载了DefaultMutableTreeNode的构造方法
    super(userObject);
    }
    private long UserID;
    private String name_zh;
    public long getUserID() {
    return UserID;
    }
    public void setUserID(long UserID) {
    UserID = UserID;
    }
    public String getUserName() {
    return UserName;
    }
    public void setUserName(String UserName) {
    this.UserName = UserName;
    }
    }调用的代码:NodeBean SelectedNode = (NodeBean)tree.getLastSelectedPathComponent();
    long UserID=SelectedNode.getUserID();//这样就可以得到UserID和UserName的值了
    String UserName=SelectedNode.getUserName();我在网上查到的资料甚少,有的那么几个也是重写toString()的,不知道为什么没人想到继承
    DefaultMutableTreeNode  ^_^ 
    感谢willkinson_wang耐心的解答