感谢您查看我的问题。我会尽量让它清晰和简洁。
该程序
好的,所以我已经实现了一个聊天程序。该聊天程序的部分功能是在线用户列表。此列表每 10 秒更新一次。这是我遇到问题的程序部分。每隔 10 秒,我的服务器将以一个 CSV 字符串向每个客户端发送一个包含所有在线用户的数据包。客户端成功解析数据包,并将每个名称加载到 ListView 中。所有这些事情都完全按照我想要的方式工作。
问题
当列表刷新时,所有焦点都丢失了。我想这是因为列表中的所有项目都被替换了,但我正在努力想办法解决它。之所以重要,是因为用户要向另一个用户发送消息,他们必须单击列表中的名称,然后发送消息。显然,如果它不断刷新它会使使用聊天程序非常烦人!
字符串填充此字段:
private DefaultListModel<String> usersList;
使用以下代码绑定到 ListView:
this.list = new JList(this.usersList);
并由来自服务器的数据更新,使用以下方法:
public void setOnlineUsersList()
{
String[] onlineUsers = this.c.getOnlineUsers();
// Request the client to query the server for online users. Execution waits until a response is recieved.
if (this.usersList.size() > 0) {
// Ensure there are users online.
this.usersList.clear();
// Clear the users from the list, if they need to be replaced.
}
for (String s : onlineUsers)
{
// Add each username to the DefaultListModel, which updates the ListView.
this.usersList.addElement(s);
}
}
问题
你们能给我提供任何方法,让客户端可以从“在线列表”中选择另一个用户,当列表刷新时,ListItem 会记住它的焦点,这样客户端就不必一直点击用户?我不是在这里寻找代码,也不是通过任何想象来快速修复。我只是想了几天,现在我被困住了,所以非常感谢任何帮助。
在此先感谢,克里斯。