[英](Java) JList displays an empty list occasionally on program start
我的程序在程序启动时从给定目录中读取文件(每个文件都包含一个对象),并将每个 object 添加到 Vector。 然后调用 updateList() 循环遍历这些对象中的每一个,将它们的名称(字符串属性)添加到具有 DefaultListModel 的 JList 中。
问题是,当程序启动时,列表很少显示为空。 我已经执行了许多检查,例如获取列表 model 报告的列表中的条目数,并且一切似乎都是正确的。
有人见过这个吗? 我在这里错过了一些重要的事情吗?
谢谢,下面的 updateList():
private void updateList(){
for (int i=0; i < calculators.size(); i++){
listModel.addElement(calculators.get(i).getName());
}
}
有人见过这个吗?
随机错误通常会发生,因为您没有在事件调度线程上更新 Swing 组件。 阅读 Swing 教程中关于 并发的部分以获取更多信息。
特别是在启动 GUI 时,您将使用 invokeLater() 方法。 Swing 教程有很多例子。 本教程使用的基本结构如下:
import java.awt.*;
import javax.swing.*;
public class SSCCE extends JPanel
{
public SSCCE()
{
add( new JLabel("Label") );
}
private static void createAndShowUI()
{
JFrame frame = new JFrame("SSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add( new SSCCE() );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowUI();
}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.