📄 mytree.java
字号:
package client;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeSelectionModel;
public class MyTree extends JPanel {
int k = 0;
JTree tree;
DefaultMutableTreeNode listmode1,listmode2,listmode3,listmode4;
JButton button1;
MyImageTree ImageTree;
clientGUI clientgui;
private Client client;
private udptalks udptalk;
public MyTree(Client client,clientGUI clientgui,udptalks udptalk){
this.udptalk = udptalk;
this.client = client;
this.clientgui = clientgui;
DefaultMutableTreeNode str4 = new DefaultMutableTreeNode("liran");
DefaultMutableTreeNode str5 = new DefaultMutableTreeNode("miaomaio");
//listmode1.add(str4);
// listmode2.add(str5);
// listmode3.add(str4);
//listmode3.add(str5);
// this.add(listmode4);
tree = this.checkJTree();
this.setLayout(new BorderLayout());
button1 = new JButton("我的好友");
button1.setPreferredSize(new Dimension(200,17));
this.add(button1,"North");
this.add(tree,"Center");
}
public void changeJTree(JTree tree1){
this.remove(tree);
this.add(tree1,"Center");
tree = tree1;
this.updateUI();
}
public JTree checkJTree(){
String[] online = null;
String[] downline = null;
String[] Mygroups = null;
online = client.getonline();
downline = client.getdownline();
Mygroups = client.mygroups;
listmode1 = new DefaultMutableTreeNode("在线好友");
listmode2 = new DefaultMutableTreeNode("离线好友");
listmode3 = new DefaultMutableTreeNode("我的群组");
listmode4 = new DefaultMutableTreeNode("好友列表");
for(int i = 0; i<online.length; i++){
listmode1.add(new DefaultMutableTreeNode(online[i]));
System.out.println("在线用户名:"+online[i]);
}
for(int i = 0; i<downline.length; i++){
listmode2.add(new DefaultMutableTreeNode(downline[i]));
System.out.println("离线用户名:"+downline[i]);
}
for(int i = 0; i< Mygroups.length; i++){
listmode3.add(new DefaultMutableTreeNode(Mygroups[i]));
System.out.println("我的群组:"+Mygroups[i]);
}
listmode4.add(listmode1);
listmode4.add(listmode2);
listmode4.add(listmode3);
JTree tree1 = new JTree(listmode4);
ImageTree = new MyImageTree(clientgui,udptalk,this);
ImageTree.putUse(0,"好友列表", "messenger_big.gif");
ImageTree.putUse(1,"在线好友", "messenger_big.gif");
ImageTree.putUse(2,"离线好友", "messenger_big.gif");
ImageTree.putUse(3,"我的群组", "messenger_big.gif");
for(int i=0; i<online.length; i++){
ImageTree.putUse(k++,online[i],"buddy.gif");
}
for(int i=0; i<downline.length; i++){
ImageTree.putUse(k++,downline[i],"buddy.gif");
}
for(int i=0; i<Mygroups.length; i++){
ImageTree.putUse(k++,Mygroups[i],"buddy.gif");
}
tree1.setCellRenderer(ImageTree);
tree1.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
tree1.addTreeSelectionListener(ImageTree);
return tree1;
}
}
class MyImageTree extends DefaultTreeCellRenderer implements TreeSelectionListener{
Border border = new EmptyBorder(1, 1, 1, 1);
ArrayList no=new ArrayList();
ArrayList name=new ArrayList();
ArrayList photo=new ArrayList();
private clientGUI clientgui;
private udptalks udptalk;
private MyTree mytrees;
public MyImageTree(clientGUI clientgui,udptalks udptalk,MyTree mytrees){
this.udptalk = udptalk;
this.clientgui = clientgui;
this.mytrees = mytrees;
setOpaque(true);
setBorder(border);
}
public void putUse(int NO,String Name,String Photo){
no.add(NO);
name.add(Name);
photo.add(Photo);
}
public void updateUse(int NO,String Name,String Photo){
for(int i=0;i<no.size();i++){
if(String.valueOf(no.get(i)).equals(String.valueOf(NO))){
name.set(i,Name);
photo.set(i,Photo);
}
}
}
public Component getTreeCellRendererComponent(JTree tree,Object value,boolean sel,boolean expanded,boolean leaf,int row,boolean hasFocus){
super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
setText(value.toString());
if(sel)
setForeground(getTextSelectionColor());
else
setForeground(getTextNonSelectionColor());
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
String str = value.toString();
for(int i=0;i<no.size();i++){
if(str.equals(String.valueOf(name.get(i)))){
ImageIcon im = new ImageIcon(String.valueOf(photo.get(i)));
this.setIcon(new ImageIcon(String.valueOf(photo.get(i))));
}
}
return this;
}
public void valueChanged(TreeSelectionEvent arg0) {
JTree tree = (JTree) arg0.getSource();
DefaultMutableTreeNode selectionNode =
(DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
if (selectionNode.isLeaf()){
System.out.println("叶子信息:"+selectionNode.toString());
String friendsmessage = selectionNode.toString();
mytrees.changeJTree(mytrees.checkJTree());
if(friendsmessage.equals("1111")){
Groupworks works = (Groupworks)clientgui.client.group1.get("1111");
if(works.grouptalk == null){
udptalk.sent_data(clientgui.client.host,5748,"获取群组:"+clientgui.client.localname+"/1111");
}
}else if(friendsmessage.equals("2222")){
Groupworks works = (Groupworks)clientgui.client.group1.get("2222");
if(works.grouptalk == null){
udptalk.sent_data(clientgui.client.host,5748,"获取群组:"+clientgui.client.localname+"/2222");
}
}else{
talkGUI talking = clientgui.serch(friendsmessage);
if(talking == null){
clientgui.inserttalkfriends(friendsmessage, new talkGUI(friendsmessage,clientgui,udptalk));
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -