public class TreeNodeRender extends JPanel implements TreeCellRenderer{
         private UserInfo user;     //用户信息
private JLabel nodeImg = null;
private JLabel label; public Component getTreeCellRendererComponent(JTree tree,Object value,boolean sel,
boolean expanded,boolean leaf,int row,boolean hasFocus){
       DefaultMutableTreeNode node=(DefaultMutableTreeNode)value;
       if(sel) this.setBackground(Color.green);
       else this.setBackground(Color.white);
       Object obj=node.getUserObject();
       if(obj instanceof UserInfo){
        user=(UserInfo)obj;
        leaf=true;
        expanded=false;
        
       nodeImg=new JLabel(createImg(user.getUserImg(),50,50));  //createImg是自定义创建图片方法
        String nickname=user.getNickName();
       label=new JLabel(nickname);
       this.setBounds(1,1,300,50);
       this.add(nodeImg);
       this.add(label);
       }
       
       return this; }
public class UserTree extends JTree{
private DefaultMutableTreeNode root;
private DefaultTreeModel treeModel;
public JLabel label;
private Dao dao;
private SXMainFrame mainFrame;
//private static String userId;
private List<Friends> friendList=new ArrayList<Friends>();


//构造初始化用户列表的树形结构
public UserTree(SXMainFrame mainFrame){
super();
root=new DefaultMutableTreeNode();
treeModel=new DefaultTreeModel(root);
dao=new Dao();
addTreeSelectionListener(new TreeSelectionListener() {

@Override
public void valueChanged(TreeSelectionEvent e) {
// TODO Auto-generated method stub
DefaultMutableTreeNode   node   =   (DefaultMutableTreeNode)getLastSelectedPathComponent(); 
if(node   ==   null)return; 
if(node.isLeaf()){
if(getToggleClickCount()==1)
JOptionPane.showMessageDialog(null,node.getUserObject());

}
}
}); setRowHeight(50);
setToggleClickCount(1);
initTree();
setRootVisible(false);
setCellRenderer(new TreeNodeRender());
setModel(treeModel);

this.mainFrame=mainFrame;

}
private synchronized void initTree(){
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
ResultSet rs=dao.getUserGroups(mainFrame.user.getUserId());
try{
Thread.sleep(100);
root.removeAllChildren();
while(rs.next()){
String groupName=rs.getString(2);
DefaultMutableTreeNode groupRoot=new DefaultMutableTreeNode(groupName);
friendList=dao.getFriendList(SXMainFrame.user.getUserId());
Iterator<Friends> iterator=friendList.iterator();
while(iterator.hasNext()){
 Friends friend=(Friends)iterator.next(); //获取好友
if(friend.getGroupName().equals(groupName)){
UserInfo friendInfo=new UserInfo(); //定义好友个人对象,用于保存好友个人详细信息
friendInfo=dao.getUser(friend.getFriendId());
groupRoot.add(new DefaultMutableTreeNode(friendInfo)); //调用createLeafNode方法,并将返回的节点添加到组节点中
}
else
 continue;
 }
root.add(groupRoot);
}
treeModel.reload();
       }catch(Exception e){
e.printStackTrace();
}

}
}).start();
}