2021/8/25

本文档展示了使用Java编程实现QQ项目的部分代码,包括签到打卡、观看Java视频的学习计划,以及QQ客户端中添加好友的事件处理方法。在客服端线程中,详细描述了如何接收并处理添加好友的实时信息,如验证请求和信息显示。
摘要由CSDN通过智能技术生成

#8:30-9:00 签到打卡

#9:30-12:00 观看java视频

#14:00-18:00 写qq项目

1.添加好友点击事件方法

 public static void main(String[] args) {//显示搜索的好友信息
        new qqfriend("1");
    }
    public void shows(String id,String name){
        oid[i]=id;
        oname[i]=name;
         jl[i].setText("账号:"+id+"   昵称:"+name);
         flag[i]=true;
        i++;
    }
    public void shows(){//搜不到显示
        if(i==0){
            jl[i].setText("很抱歉没有找到当前id的账号");
        }else{
            jl[i].setText("很抱歉没有找到当前名字的账号");
        }
        flag[i]=false;
        i++;
    }
    public void shows(String id){
        jll[j]=new JLabel();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==jb){
            try {
                i=0;
                ObjectOutputStream oos=new ObjectOutputStream(Mthreads.getThread(id).s.getOutputStream());
                Massage m=new Massage();
                m.setS("20");
                m.setMyid(id);
                m.setXiaoxi(jt.getText().trim());
                oos.writeObject(m);
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
        }else if(e.getSource()==jb1[0]){//点击后将发送好友验证请求
                if(flag[0]){
                    int n=JOptionPane.showConfirmDialog(null,"你确定添加他为好友吗?","添加提示",JOptionPane.YES_NO_OPTION);
                    if(n==0){
                        try {
                            ObjectOutputStream oos=new ObjectOutputStream(Mthreads.getThread(id).s.getOutputStream());
                            Massage m=new Massage();
                            m.setS("22");
                            m.setMyid(id);
                            m.setOid(oid[0]);
                            m.setOname(oname[0]);
                        } catch (IOException ioException) {
                            ioException.printStackTrace();
                        }
                    }
                }
        }else if(e.getSource()==jb1[1]){
                if(flag[1]){
                    int n=JOptionPane.showConfirmDialog(null,"你确定添加他为好友吗?","添加提示",JOptionPane.YES_NO_OPTION);
                    try {
                        ObjectOutputStream oos=new ObjectOutputStream(Mthreads.getThread(id).s.getOutputStream());
                        Massage m=new Massage();
                        m.setS("22");
                        m.setMyid(id);
                        m.setOid(oid[1]);
                        m.setOname(oname[1]);
                    } catch (IOException ioException) {
                        ioException.printStackTrace();
                    }
                }
        }else {
            for(int i=0;i<10;i++){
                if(e.getSource()==jll[i]){

                    break;
                }
            }
        }
    }
}

2.改进客服端线程,添加好友现时信息。

package qqc.mode;

import qqc.massage.Massage;
import qqc.view.qqchat;

import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.Socket;

public class Mthread extends Thread{
    public Socket s;
    ObjectInputStream ois =null;
    public Mthread(Socket s) {
        this.s = s;
    }

    @Override
    public void run() {
        while(true) {
            try {
                ois = new ObjectInputStream(s.getInputStream());
                Massage m = (Massage) ois.readObject();
                if(m.getS().equals("1")){
                    System.out.println(m.getOid() + " " + m.getMyid());
                    Mqqchat.getJa(m.getOid() + " " + m.getMyid()).setOpaque(true);//信息收到标记
                    Mqqchat.getJa(m.getOid() + " " + m.getMyid()).setForeground(Color.BLUE);
                qqchat qc = Mqqchat.getchat(m.getOid() + " " + m.getMyid());
                String s=m.getMyname()+"说: " + m.getXiaoxi();
                qc.shows(s);
                }else if(m.getS().equals("11")){//是否在线
                    Mqqchat.getJa(m.getOid()+" "+m.getMyid()).setEnabled(true);
                }else if(m.getS().equals("4")){//群聊
                    Mqqchat.getqun(m.getOid()+" "+m.getQun()).setOpaque(true);
                    Mqqchat.getqun(m.getOid()+" "+m.getQun()).setForeground(Color.BLUE);
                    Mqqchat.getqqun(m.getOid()+" "+m.getQun()).shows(m.getMyname()+"说: "+m.getXiaoxi());
                }else if(m.getS().equals("20")){
                    Mqqchat.getfriend(m.getMyid()).shows(m.getOid(),m.getOname());

                }else if(m.getS().equals("21")){
                    Mqqchat.getfriend(m.getMyid()).shows();

                }else if(m.getS().equals("22")){//好友信息验证
                    Mqqchat.getfriend(m.getOid()).shows();
                }else if(m.getS().equals("99")){
                    Mqqchat.getJa(m.getOid()+" "+m.getMyid()).setEnabled(false);
                }

            } catch (IOException | ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值