中我們擷取伺服器上的使用者好友資訊,然後結合 我們將兩個合并起來,首先擷取使用者組,然後把使用者組用List儲存起來用作對比好友的使用者組,根據使用者組的個數然後建立相應的DefaultMutableTreeNode節點用於添加好友,擷取好友名單,根據使用者組把目前使用者添加的所屬的使用者組,這裡要注意的是一個好友可以存在不同的使用者組裡面,所以擷取的好友所在的組也是一個集合,最後在添加一個根的DefaultMutableTreeNode把之前使用者組都添加到根組裡面,最後把根組添加到JTree裡面最後再把JTree添加到jTabbedPane裡面.主要代碼如下:
/** * 擷取使用者好友 */ public void getRoster() { if (conn != null) { roster = conn.getRoster(); getRosterPresenceChange(); Collection<RosterGroup> groups = roster.getGroups(); int size = groups.size(); treeNode = new DefaultMutableTreeNode[size]; int i = 0; for (RosterGroup group : groups) { groupsList.add(group.getName()); treeNode[i] = new DefaultMutableTreeNode(group.getName()); i++; } Collection<RosterEntry> entries = roster.getEntries(); for (RosterEntry entry : entries) { Collection<RosterGroup> group = entry.getGroups(); for (RosterGroup g : group) { if (groupsList != null) { int size_1 = groupsList.size(); for (i = 0; i < size_1; i++) { if (g.getName().equals(groupsList.get(i))) { treeNode[i].add(new DefaultMutableTreeNode(entry.getName())); } } } } } for (i = 0; i < size; i++) { top.add(treeNode[i]); } JTree tree = new JTree(top); JScrollPane scrollPane = new JScrollPane(); scrollPane.setViewportView(tree); jTabbedPane.addTab("好 友", scrollPane); } }