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

📄 mytree.java

📁 一个采用Java Socket编程实现的QQ软件
💻 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 + -