📄 friendtree.java
字号:
package clientele;
import java.awt.Color;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Enumeration;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import setting.User;
public class FriendTree
{
/**
* 定义DefaultTreeModel
*/
DefaultTreeModel treemode;
/**
* 定义根节点"我的好友"
*/
DefaultMutableTreeNode root = new DefaultMutableTreeNode("我的好友");
/**
* 以节点"我的好友"构造一棵树
*/
JTree tree = new JTree(root);
/**
* 定义节点"在线的好友"
*/
DefaultMutableTreeNode online;
/**
* 定义节点"不在线的好友"
*/
DefaultMutableTreeNode quitline;
/**
* 添加"在线的好友"和"不在线的好友"节点
*/
JMenuItem menuItem1 ;
JMenuItem menuItem2;
JMenuItem menuItem3 ;
JMenuItem menuItem4 ;
JMenuItem menuItem5 ;
JMenuItem menuItem6 ;
/**
* 树初始化
*/
public JTree chushi()// 未加任何好友的情况
{
treemode = (DefaultTreeModel) tree.getModel();// 得到DefaultTreeModel
tree.setBackground(SystemColor.inactiveCaptionText);
online = new DefaultMutableTreeNode("在线好友");
quitline = new DefaultMutableTreeNode("离线好友");
treemode.insertNodeInto(online, root, 0);
treemode.insertNodeInto(quitline, root, 1);
tree.setRowHeight(20);
tree.setBorder(new LineBorder(Color.BLUE));
tree.scrollPathToVisible(new TreePath(quitline.getPath()));
tree.addMouseListener(new MouseAdapter() {
@SuppressWarnings("deprecation")
public void mousePressed(MouseEvent e)
{
@SuppressWarnings("unused")
int selRow = tree.getRowForLocation(e.getX(), e.getY());
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
if (e.getClickCount() == 2)
{
JTree tree = (JTree) e.getSource();
int rowLocation = tree
.getRowForLocation(e.getX(), e.getY());
TreePath treepath = tree.getPathForRow(rowLocation);
TreeNode treenode = (TreeNode) treepath
.getLastPathComponent();
String id;
id = treenode.toString();
Client.client.openChatUI(id);
}
if (SwingUtilities.isRightMouseButton(e))
{
JPopupMenu popupMenu1 = new JPopupMenu();
ItemListenerimp Itemimp=new ItemListenerimp(e);
menuItem1 = new JMenuItem();
menuItem2 = new JMenuItem();
menuItem3 = new JMenuItem();
menuItem4 = new JMenuItem();
menuItem5 = new JMenuItem();
menuItem6 = new JMenuItem();
menuItem1.addActionListener(Itemimp);
menuItem2.addActionListener(Itemimp);
menuItem3.addActionListener(Itemimp);
menuItem4.addActionListener(Itemimp);
menuItem5.addActionListener(Itemimp);
menuItem6.addActionListener(Itemimp);
menuItem1.setLabel("聊天");
menuItem2.setLabel("企业消息");
menuItem3.setLabel("删除好友");
menuItem4.setLabel("查看信息");
menuItem5.setLabel("聊天记录");
menuItem6.setLabel("查看好友IP");
popupMenu1.add(menuItem1);
popupMenu1.add(menuItem2);
popupMenu1.add(menuItem3);
popupMenu1.add(menuItem4);
popupMenu1.add(menuItem5);
popupMenu1.add(menuItem6);
TreeNode treenode = (TreeNode)selPath
.getLastPathComponent();
try
{
Integer.parseInt(treenode.toString());
popupMenu1.show(e.getComponent(), e.getX(), e.getY());
;
}catch(Exception ecast)
{
return;
}
}
}
});
return tree;
}
/**
* 根据id在“在线的好友"的子节点中添加该以id为节点的子节点
*/
public void addonlinefriend(int id)
{
treemode = (DefaultTreeModel) tree.getModel();// 得到DefaultTreeModel
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(String
.valueOf(id));
treemode.insertNodeInto(newNode, online, online.getChildCount());
tree.setRowHeight(20);
tree.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION);// 只能选取一个节点
tree.setRowHeight(20);
tree.scrollPathToVisible(new TreePath(newNode.getPath()));
}
/**
* 根据id在“不在线的好友"的子节点中添加该以id为节点的子节点
*/
public void addnotonlinefriend(int id)
{
treemode = (DefaultTreeModel) tree.getModel();// 得到DefaultTreeModel
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(String
.valueOf(id));
treemode.insertNodeInto(newNode, quitline, quitline.getChildCount());
tree.setRowHeight(20);
tree.scrollPathToVisible(new TreePath(newNode.getPath()));
}
/**
* 首先在在线的好友节点中 删除离线的那位好友 再在不在线的好友节点中 添加离线的那位好友
*/
public void liveline(User user, int id)
{
delNode(user, id);
addNode(id);
// tree.addMouseListener(new MouseListenerimp());
}
/**
* 首先在不在线的好友节点中 删除离线的那位好友 再在在线的好友节点中 添加离线的那位好友
*/
public void shangxian(User user, int id)
{
delNode2(user, id);
addNode2(id);
// tree.addMouseListener(new MouseListenerimp());
}
/**
* 根据id在“不在线的好友"的子节点将此id删除
*/
@SuppressWarnings("unchecked")
public void delNode2(User user, int id)// 删除节点
{
DefaultMutableTreeNode n = new DefaultMutableTreeNode();
if (quitline.getChildCount() > 0)
{// 若在线好友大于零
for (Enumeration e = quitline.children(); e.hasMoreElements();)
{
n = (DefaultMutableTreeNode) e.nextElement();
if (n.toString().equals(String.valueOf(id)))
{
quitline.remove(n);// 查找在线的列表中有没有此ID有则删除
treemode.reload();
tree.scrollPathToVisible(new TreePath(n.getPath()));
}
}
}
}
/**
* 根据id在“在线的好友"的子节点将此id删除
*/
@SuppressWarnings("unchecked")
public void delNode(User user, int id)// 删除节点
{
DefaultMutableTreeNode n = new DefaultMutableTreeNode();
if (online.getChildCount() > 0)
{// 若在线好友大于零
for (Enumeration e = online.children(); e.hasMoreElements();)
{
n = (DefaultMutableTreeNode) e.nextElement();
if (n.toString().equals(String.valueOf(id)))
{
online.remove(n);// 查找在线的列表中有没有此ID有则删除
treemode.reload();
tree.scrollPathToVisible(new TreePath(n.getPath()));
}
}
}
}
/**
* 根据id在“不在线的好友"节点添加该以id为节点的子节点
*/
public void addNode(int id)
{
treemode = (DefaultTreeModel) tree.getModel();// 得到DefaultTreeModel
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(String
.valueOf(id));
treemode.insertNodeInto(newNode, quitline, quitline.getChildCount());
tree.scrollPathToVisible(new TreePath(newNode.getPath()));
}
/**
* 根据id在“在线的好友"节点添加该以id为节点的子节点
*/
public void addNode2(int id)
{
treemode = (DefaultTreeModel) tree.getModel();// 得到DefaultTreeModel
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(String
.valueOf(id));
treemode.insertNodeInto(newNode, online, online.getChildCount());
tree.scrollPathToVisible(new TreePath(newNode.getPath()));
}
/**
* 根据id在“在线的好友"节点或"不在线的好友"节点中 删除该以id为节点的子节点
*/
@SuppressWarnings({ "unchecked", "unchecked" })
public void delfriend(int id)
{
DefaultMutableTreeNode n = new DefaultMutableTreeNode();
for (Enumeration e = online.children(); e.hasMoreElements();)
{
n = (DefaultMutableTreeNode) e.nextElement();
if (n.toString().equals(String.valueOf(id)))
{
online.remove(n);// 查找在线的列表中有没有此ID有则删除
treemode.reload();
tree.scrollPathToVisible(new TreePath(n.getPath()));
}
}
for (Enumeration e = quitline.children(); e.hasMoreElements();)
{
n = (DefaultMutableTreeNode) e.nextElement();
if (n.toString().equals(String.valueOf(id)))
{
quitline.remove(n);//查找在线的列表中有没有此ID有则删除
treemode.reload();
tree.scrollPathToVisible(new TreePath(n.getPath()));
}
}
}
}
class ItemListenerimp implements ActionListener
{
MouseEvent me;
String id;
ItemListenerimp(MouseEvent e)
{
me=e;
JTree tree = (JTree) me.getSource();
int rowLocation = tree
.getRowForLocation(me.getX(), me.getY());
TreePath treepath = tree.getPathForRow(rowLocation);
TreeNode treenode = (TreeNode) treepath
.getLastPathComponent();
id = treenode.toString();
}
public void actionPerformed(ActionEvent e)
{
/**
* 开启聊天窗口
*/
if (e.getSource() == Client.friendTree.menuItem1)
{
Client.client.openChatUI(id);
}
/**
* 发送企业消息
*/
if (e.getSource() == Client.friendTree.menuItem2)
{
Client.client.openInChatUI(id);
}
/**
* 查看IP
*/
if (e.getSource() == Client.friendTree.menuItem6)
{
try
{
Client.client.checkfriendIP(Integer.parseInt(id));
}
catch (NumberFormatException e1)
{
e1.printStackTrace();
}
}
/**
* 删除好友
*/
if (e.getSource() == Client.friendTree.menuItem3)
{
Client.client.delFriend(Integer.parseInt(id));
}
/**
* 查看好友信息
*/
if (e.getSource() == Client.friendTree.menuItem4)
{
Client.client.checkfriendInfo(Integer.parseInt(id));
}
/**
* 查看聊天记录
*/
if(e.getSource() == Client.friendTree.menuItem5)
{
Client.client.openChatRecord(id);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -