⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 friendtree.java

📁 是一个JAVA通讯程序.功能不多
💻 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 + -