java - 为什么将 ArrayList 传递给其他班级后它是空的?
问题描述
我一直在做一个聊天室项目,我试图用另一个类的 ArrayList 填充 GUI 的一部分,我试图使用 JList 和 JTextArea 但由于某种原因,我的 ArrayList 总是一旦它被传递到下一个班级,就为空。我已经被困了几天了,我研究了很多,经历了许多类似的线程,但没有找到我的答案。
服务器类
private static ArrayList<ClientInfo> clients = new ArrayList<ClientInfo>();
private static ArrayList<String> membersList = new ArrayList<String>();
public static void memberlist() {
for (ClientInfo userName : clients) {
if (!membersList.contains(userName.getName())) {
membersList.add(userName.getName());
}
}
}
public ArrayList<String> getMembers() {
System.out.println("This was called from another class");
return membersList;
}
clients.add(new ClientInfo(name, ClientID++, packet.getAddress(), packet.getPort()));
memberlist();
所以我有一个客户 ArrayList,但我需要一个只包含用户名的列表,所以我创建了另一个名为 membersList 的 ArrayList,在此我使用 for 循环将名称从客户列表中取出并将它们放入我的新列表中,然后我创建了一个getter 方法应该返回这些名称。
最后一点是在同一个类中的一个单独的方法中,它在我调用 memberlist 方法之后添加客户端信息。
客户端窗口类
private static JTextArea membersList = new JTextArea();
Server members = new Server();
membersList.setEditable(false);
membersList.append(members.getMembers() + "\n");
System.out.println(membersList);
在我的 GUI 类中,我创建了一个 JTextArea 并尝试使用 ArrayList getter 方法填充它,但是一旦将它传递给我的 GUI 类,arraylist 总是为空的,我之前使用 JList 来执行此操作,我得到了完全相同的结果,然后我的朋友告诉我列表是空的,因为我使用 .toArray 来转换 ArrayList。该列表在服务器类中打印时始终包含用户名,但一旦到达 ClientWindow 类,它就是空的。所以我尝试使用 JTextArea 以为我解决了问题,但列表再次为空。
以前的 JList 代码
private JList<String> activeMembers;
Server members = new Server();
activeMembers = new JList<String>(members.getMembers().toArray(new String[0]));
activeMembers.setVisibleRowCount(4);
activeMembers.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
任何帮助将不胜感激,我在这个网站上的第一篇文章,所以如果我有任何不清楚的地方,我很抱歉。(ps:对编码也很陌生)
解决方案
推荐阅读
- kendo-ui - 如何更改 kendo ui 圆环图系列 categoryField 中的数据排序?
- apache-flink - Flink 如何将 DAG 节点分配到不同的任务槽?
- telerik - Telerik UI 用于 UWP RadCalendar 控件绑定到选定日期
- python - 生成 Twilio Python 客户端功能令牌
- azure-storage - 如何使用 nifi 从文件共享位置获取文件?
- jenkins - 如何将从节点上的 .jenkins 文件夹路径更改为另一个目录值
- livecode - 如何在实时代码中包含库文件(.dll/.lib)并使用库文件中的函数
- r - 将给定模式从字符串中的任何位置移动到正则表达式的起始位置
- javascript - 将模态对话框中的值返回到 html 表中的确切行
- ionic4 - ion-slides 方法在 ionic 4 中不起作用