主要问题:
现在已经可以实现聊天拉,在局域网里我试了可以3台一起聊天,
但是我要实现的把用户登陆时选择的图片等资料,加到在线用户表中时有问题,加不了。
但是如果我初始化在 构造函数里面写 就可以如:
names.add(new MyData("gcc", "男", pictrue[0]));
names.add(new MyData("jjj", "女", pictrue[3]));(name是Vector对象)////如果把这上面2行加到Client_Chat的run方法里面 就添加不了
mode = new DataModel(vector);(DataModel对象)
jlist = new JList(mode);
//////////////////////////////
客户端:
Client_Main客户端主类(其他界面添加到里面)
Client_InputName客户端刚开始登陆界面(输入用户id和密码)
Client_Chat客户端聊天界面(登陆就可以合法进入聊天)
MyData自定义的用户数据类(把它添加到Client_Chat的在线用户的jlist里面去)
MyListCellRenderer 是把jlist中的一行当作一个jLabel这样可以实现添加图片
DataModel是实现把向量里面的内容加到jlist中去
服务器:
ChatServer服务器主类:
Server_Thread对每个连接的用户分配线程

解决方案 »

  1.   

    楼主大哥,我也在写一个聊天的程序,只是老师让我练习的,不用加照片什么的,只需要实现多台同时聊天即可,我写的有点问题,以致不能解决,在这发帖子了,也没结果,可否把你的程序法给我看看,我参考学习一下,谢谢,
    [email protected]
      

  2.   

    jList的加载不要在init时,在用户登录后动态的加载,就可以了。
      

  3.   

    是Aplication程序 我在构造函数里面加载是想试试 看可不可以加上去,结果是可以的
    但是在线程里面加载就加不上去
      

  4.   

    names是Vector对象 是对另一个类传过来的引用,(在构造函数中用this.names=names句话实现)
    下面代码是在Runnable接口中的run()方法中,但是添加后有异常Exceptinon:NullPointException
    if(s.startsWith("Speaker: "))//////////更新列表
    {
    String people_name=s.substring(s.indexOf("@: ")+3,s.indexOf("#: "));
    String people_sex=s.substring(s.indexOf("#: ")+3,s.indexOf("$: "));
    int people_icon_id=Integer.parseInt(s.substring(s.indexOf("$: ")+3));
    System.out.println(people_name);
    System.out.println(people_sex);
    System.out.println(people_icon_id);
    if(this.name.compareTo(people_name)!=0)
    {
    System.out.println("准备添加用户!+"+people_name+" "+people_sex);
    names.add(new MyData(people_name,people_sex,pictrue[people_icon_id]));
    System.out.println("成功添加用户!!!!!");
    ////////添加用户出现的问题在这!!!!!!!!!
             }
    }