(Java) JList 在程序启动时偶尔会显示空列表
我的程序在程序启动时从给定目录读取文件(每个文件包含一个对象),并将每个对象添加到 Vector 中。然后调用 updateList(),它逐一循环遍历这些对象中的每一个,将它们的名称(字符串属性)添加到具有 DefaultListModel 的 JList 中。
问题是,当程序启动时,列表很少显示为空。我已经执行了许多检查,例如获取列表模型报告的列表中的条目数,一切似乎都是正确的。
有人见过这个吗?我在这里错过了一些重要的事情吗?
谢谢,下面的 updateList() :
private void updateList(){
for (int i=0; i < calculators.size(); i++){
listModel.addElement(calculators.get(i).getName());
}
}
My program reads in files from a given directory on program start (each one containing an object), and adds each object to a Vector. updateList() is then called which loops through each of these objects one by one, adding their names(String property) to a JList with a DefaultListModel.
The issue is that very rarely when the program starts, the list appears empty. I have performed many checks such as getting the number of entries in the list as reported by the list model and everything would appear to be correct.
Has anybody seen this before? Am I missing something important here?
Thanks, updateList() below:
private void updateList(){
for (int i=0; i < calculators.size(); i++){
listModel.addElement(calculators.get(i).getName());
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
随机错误通常会发生,因为您没有更新事件调度线程上的 Swing 组件。有关详细信息,请阅读 Swing 教程中有关并发的部分。
特别是,在启动 GUI 时,您将使用 invokeLater() 方法。 Swing 教程有大量示例。本教程使用的基本结构如下:
Random errors generally happen because you are not updating Swing components on the Event Dispatch Thread. Read the section from the Swing tutorial on Concurrency for more information.
In particular you would use the invokeLater() method when starting your GUI. The Swing tutorial has plenty of examples. The basic structure the tutorial uses is like: