【发布时间】:2012-01-19 08:04:52
【问题描述】:
我正在尝试创建一个游戏大厅,我的服务器向我发送游戏列表,每次有新游戏时,都会执行以下代码:
public void setGames(ArrayList<Game> games) {
if (listModel != null) {
System.out.println(games.size() + " games");
listModel.clear();
int index = 0;
for (Game game : games) {
listModel.add(index, game);
index++;
System.out.println(index);
}
}
System.out.println(listModel.getSize());
}
但是,有时列表没有显示任何条目,但输出确实显示: 6场比赛 1 2 3 4 5 6 6
截图:
我确实检查了我的文件,无论 listModel 是否被清除、条目是否被删除或 listmodel 发生了任何事情,但事实并非如此......
当我向 JList 添加重绘时,错误仍然存在...... 截屏:
【问题讨论】:
-
1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2) 确保在 EDT 上执行 GUI 更新。 3)鉴于您的屏幕截图可以总结为“没有出现新条目”,我发现它们是无用的(并且浪费带宽)噪音。
-
你违反了封装。我会说这是你麻烦的根本原因。如果您将任务委派给适当的对象,这将不是问题。我建议您阅读
JList组件的内部工作原理。 -
您确定您正在调试/填充的 listModel 与设置为 JList 的实例相同吗?
-
好的,然后回到第一步:参见@Andrew Thompson 的第一条评论。发生了一些可疑的事情...显示您的代码(以 sscce 的形式 :-)
-
阅读有关并发的教程章节 - 您需要使用 SwingUtilities.invokeLater 或自定义 SwingWorker
标签: java swing jscrollpane jlist defaultlistmodel