📄 friendtree.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 + -