GUI多线程聊天室

GUI多线程聊天室

实现下面的功能

GUI

项目总结

  1. 主要就是三个按纽的功能,实现了"连接"和"发送"后,基本就大功造成了
  2. 画图时"用户列表"用JList列表来实现
  3. 在连接完成后,就要开启一个线程,来"接收消息"
  4. 定时器实时监听,聊天消息的条数,是否超标
  5. 客户端和服务端的代码,耦合度极高,可以写在一个类中

客户端

package com.li.changGe.datagramSocketChatroom;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Vector;

public class Client extends JFrame implements Runnable, ActionListener {
   

  //经常用到的变量
  private volatile DatagramSocket socket = null;
  private volatile DatagramPacket packet = null;

  private InetAddress inetAddress = null;
  private String message = null;
//----------------------------------------------------------

  /**
   * 定时器对象,
   * 每隔100毫秒扫描一次全局,
   * 并执行一遍actionPerformed()
   * -----------------------------------
   *
   * 需要传入,一个实现了ActionListener的对象
   *
   * this就是:扫描当前对象
   */
  private Timer timer = new Timer(100,this);

//------------------------------------------------------------

  //用于用户列表,和聊天框显示消息
  private Vector listVector = new Vector();
  private Vector<String> chatBocVector = new Vector();

  private JList list = new JList();
  private JList chatBox = new JList();
  
  //----------------------------------------------------

  //基本属性,创建对象时传入
  private String ip;
  private String port;
  private String name;
  private volatile String username;
  private int takePort;

  //-----------------------------------------------------------
  public Client(){
   }

  public Client(String ip,String port,int takePort,String username,String name){
   
    this.ip = ip;
    this.port = port;
    this.takePort = takePort;
    this.username = username;
    this.name = name;
  }

//-----------------------------------------------------------------------

  public static void main(String[] args) throws Exception{
   

    new Client("127.0.0.1","8081",9999,"长歌","客户端").init();

  }

//---------------------------------------------------------

  //初始化时得到name,后续作代码判断
  public void init() throws Exception{
   
    setTitle(name);
    boolean isName = name.equals("客户端");

    
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helloses

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值