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

📄 friendtree.java

📁 一个仿qq的程序源码 一个用纯java开发的
💻 JAVA
字号:
package qianqian.p2pchat.gui;

import qianqian.p2pchat.control.Controller;
import qianqian.p2pchat.control.P2PConversation;
import qianqian.p2pchat.control.Peer;

public class FriendTree extends javax.swing.JTree implements
		java.awt.event.MouseListener {
	static final long serialVersionUID = 0;
	private javax.swing.tree.DefaultMutableTreeNode friendList;
	private javax.swing.tree.DefaultTreeModel model;
	private javax.swing.tree.DefaultTreeCellRenderer renderer;
	private java.util.ArrayList<Peer> peers = new java.util.ArrayList<Peer>();
	public final static java.awt.Color defColor = new java.awt.Color(215, 235,
			255);

	// 构造方法
	public FriendTree() {
		// 树结构样式
		renderer = new javax.swing.tree.DefaultTreeCellRenderer();
		renderer.setBackgroundSelectionColor(defColor);
		javax.swing.ImageIcon icon = new javax.swing.ImageIcon("icons/tree.gif");
		renderer.setOpenIcon(icon);
		renderer.setClosedIcon(icon);
		renderer.setLeafIcon(new javax.swing.ImageIcon("icons/face.gif"));
		setCellRenderer(renderer);
		// 好友列表
		friendList = new javax.swing.tree.DefaultMutableTreeNode("我的好友", true);
		model = new javax.swing.tree.DefaultTreeModel(friendList);
		setModel(model);
		setToolTipText("双击头像聊天");
		addMouseListener(this);
	}

	// 鼠标事件响应
	public void mouseReleased(java.awt.event.MouseEvent e) {
		if (e.getButton() == java.awt.event.MouseEvent.BUTTON1) {
			if (e.getClickCount() != 2)
				return;
			if (getSelectionPath() == null)
				return;
			if (getMaxSelectionRow() == 0)
				return;
			int i = this.getRowForPath(getSelectionPath()) - 1;
			P2PConversation p2pConvs = Controller.getInstance()
					.startP2PConversation(peers.get(i));
			p2pConvs.show();
		}
	}

	public void mouseClicked(java.awt.event.MouseEvent e) {
	}

	public void mouseEntered(java.awt.event.MouseEvent e) {
	}

	public void mouseExited(java.awt.event.MouseEvent e) {
	}

	public void mousePressed(java.awt.event.MouseEvent e) {
	}

	// 移出所有节点及对应聊天窗口
	public void update(java.util.LinkedList<Peer> iPeers, boolean arg) {
		Peer peer = null;
		javax.swing.tree.DefaultMutableTreeNode newNode = null;
		if (arg) {// add
			java.util.Iterator<Peer> iter = iPeers.iterator();
			while (iter.hasNext()) {
				peer = iter.next();
				if (!peers.contains(peer)) {
					peers.add(peer);
					newNode = new javax.swing.tree.DefaultMutableTreeNode(peer
							.toString(), false);
					friendList.add(newNode);
				}
			}
		} else {// delete
			for (int i = 0; i < peers.size(); i++) {
				peer = peers.get(i);
				if (!iPeers.contains(peer)) {
					peers.remove(i);
					friendList.remove(i);
					break;
				}
			}
		}
		updateUI();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -