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