为什么将 ArrayList 传递给其他类后为空?

时间:2021-02-28 15:43:58

标签: 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 方法之后添加客户端信息。

ClientWindow 类

    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 来转换 ArrrayList。该列表在服务器类中打印时始终包含用户名,但一旦到达 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:对编码也很陌生)

0 个答案:

没有答案
相关问题