我一直在关注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