列表没有正确更新?

时间:2015-10-03 18:52:42

标签: java list

我一直在关注TheCherno的网络聊天编程教程,我差不多完成了,只是在我遇到问题时修复错误。我有一个按钮,打开一个窗口,该窗口应该包含列出的所有连接用户的列表。但是,每次我测试它时,列表中唯一的项目是连接到该服务器实例的第一个人。对于连接的所有其他用户也是如此。我的代码中没有错误,这一切似乎都是正确的。我似乎无法找到错误。

这个函数是从一个正在运行的循环中调用的,其中的所有其他内容都在不断地工作,所以我认为这里没有错。

private void sendStatus() {
        if (clients.size() <= 0) return;
    String users = "/u/";
    for (int i = 0; i < clients.size() - 1; i++) {
        users += clients.get(i).name + "/n/";
    }
    users += clients.get(clients.size() - 1).name + "/e/";
    sendToAll(users);
}

这是来自另一个类,客户端解码从服务器发送的消息。

else if (message.startsWith("/u/")) {
                    String[] u = message.split("/u/|/n/|/e/");
                    users.update(Arrays.copyOfRange(u, 1, u.length - 1));
                }

然后这是处理它的图形的peice,我没有看到任何错误,但无论如何我将包括它以防万一。谢谢大家!

    private JPanel contentPane;
private JList list;
public OnlineUsers() {
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setSize(200, 320);
    setLocationRelativeTo(null);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    GridBagLayout gbl_contentPane = new GridBagLayout();
    gbl_contentPane.columnWidths = new int[]{0, 0};
    gbl_contentPane.rowHeights = new int[]{0, 0};
    gbl_contentPane.columnWeights = new double[]{1.0, Double.MIN_VALUE};
    gbl_contentPane.rowWeights = new double[]{1.0, Double.MIN_VALUE};
    contentPane.setLayout(gbl_contentPane);

    list = new JList();
    GridBagConstraints gbc_list = new GridBagConstraints();
    gbc_list.fill = GridBagConstraints.BOTH;
    gbc_list.gridx = 0;
    gbc_list.gridy = 0;
    JScrollPane p = new JScrollPane();
    p.setViewportView(list);
    contentPane.add(p, gbc_list);
    list.setFont(new Font("Verdana", 0, 14));
}

public void update(String[] users) {
    list.setListData(users);
}

仍然没有任何想法。我甚至检查了教程人员制作的源代码和它的相同内容。我真的很感激帮助,因为我14岁,只是学习java。凹凸。 https://github.com/TheCherno/ChernoChat

0 个答案:

没有答案