Java 为聊天程序GUI创建用户列表

Java 为聊天程序GUI创建用户列表,java,Java,我有三个程序一起工作来创建聊天室。我有一个服务器、处理程序和客户端。我试图在GUI中有一个固定的在线用户列表,因此如果有新客户加入聊天,他们仍然可以看到用户列表。此列表是GUI中的一个可见列表函数。我已经在聊天处理程序中创建了和数组列表,但我不知道如何在GUI中显示该列表。请帮帮我,我是初学者 服务器代码: import java.io.*; import java.net.*; import java.util.*; public class ChatServer{ Socket s;

我有三个程序一起工作来创建聊天室。我有一个服务器、处理程序和客户端。我试图在GUI中有一个固定的在线用户列表,因此如果有新客户加入聊天,他们仍然可以看到用户列表。此列表是GUI中的一个可见列表函数。我已经在聊天处理程序中创建了和数组列表,但我不知道如何在GUI中显示该列表。请帮帮我,我是初学者

服务器代码:

import java.io.*;
import java.net.*;
import java.util.*;

public class ChatServer{
  Socket s;
  ArrayList<ChatHandler>handlers;
  public ChatServer(){
try{
  ServerSocket ss = new ServerSocket(2020);
  handlers = new ArrayList<ChatHandler>();
  for(;;){
s = ss.accept();//wait for a new client to connect
new ChatHandler(s, handlers).start();// spawn a handler for client
  }
}catch(IOException ioe){
  System.out.println(ioe.getMessage());
}
  }
  public static void main(String[] args){
ChatServer tes = new ChatServer(); 
  }

}
我假设您的ArrayList中的用户是正确的。
此外,您还可以参考JList post

您需要四种方法来实现您的目标:(1)保存所有昵称的ArrayList。(2) 访问器(getter),用于将昵称列表提取到GUI中。(3) 要添加到昵称数组中的一个变体(Setter)。(4) 如果昵称与聊天室断开连接,则从阵列中删除或更新昵称的方法

总结;您需要在服务器代码中创建三个方法和一个列表。您将根据需要在客户机代码中调用这些方法。每当您想要从类外部访问服务器的方法时,您还需要一个服务器实例。请参阅下面的代码并用作参考

//Adds nickname to myList
public void AddUserName(String name){
    myList.add(name);
}

//Removes disconnected nicknames from myList
public void RemoveUserName(String name){
    for( int i = 0; i < myList.size(); i++ ){
        if(myList(i) == name){
        myList.remove(i);
        }
    }
}

//Returns all nicknames in myList
public ArrayList getUsersOnline(){
    return usersOnline;
} 
//将昵称添加到myList
public void AddUserName(字符串名称){
myList.add(名称);
}
//从myList中删除断开连接的昵称
public void RemoveUserName(字符串名称){
对于(int i=0;i
因此,在客户端代码中,您将编写如下代码:cs.getUsersOnline();。您可能还需要循环并附加到客户端的列表中。例如,见下文:

for(int i=0; i < myList.size(); i++){
    list.add(ArrayList(i));
}
for(int i=0;i

我希望我能帮上忙。

我就把这个放在这里,因为它在解决像您这样的问题时非常有用:您将如何在此列表中添加输入的用户名?我想您可能会做一些事情,比如在聊天处理程序中将您的列表设为静态,然后在连接发生时参考它,或者在聊天面板中完成,您需要在框架的ChatPanel中向其添加setter和getter,您可以说cp.getMyUserList().toArray();
public ChatFrame(){
        setSize(500,500);
        setTitle("Chatting with myself");
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent we){
                System.exit(0);
            }
        });
        ChatPanel sp = new ChatPanel();
        add(sp, BorderLayout.CENTER);
        add(new JList(YouArrayList.toArray() , BorderLayout.EAST) ; 
        setVisible(true);
    }
//Adds nickname to myList
public void AddUserName(String name){
    myList.add(name);
}

//Removes disconnected nicknames from myList
public void RemoveUserName(String name){
    for( int i = 0; i < myList.size(); i++ ){
        if(myList(i) == name){
        myList.remove(i);
        }
    }
}

//Returns all nicknames in myList
public ArrayList getUsersOnline(){
    return usersOnline;
} 
for(int i=0; i < myList.size(); i++){
    list.add(ArrayList(i));
}