Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JFrame上未显示Java JList_Java_Swing_Jlist - Fatal编程技术网

JFrame上未显示Java JList

JFrame上未显示Java JList,java,swing,jlist,Java,Swing,Jlist,我的解析器中有一些bug,它使用DefaultListModel解析站点并在JList中设置15个元素。我还添加了计时器,它会刷新一段时间,清除此模型,再次填充,然后刷新所有帧。所以错误在于,我的列表显示为随机刷新:模型仍然被填充,但列表没有显示在框架上(System.out.println(list.isVisible())显示为真,打印模型我得到了所有15个项目) 一些代码: 这在框架类声明中 private static DefaultListModel<String> lis

我的解析器中有一些bug,它使用
DefaultListModel
解析站点并在JList中设置15个元素。我还添加了计时器,它会刷新一段时间,清除此模型,再次填充,然后刷新所有帧。所以错误在于,我的列表显示为随机刷新:模型仍然被填充,但列表没有显示在框架上(
System.out.println(list.isVisible()
)显示为真,打印模型我得到了所有15个项目)

一些代码: 这在框架类声明中

private static DefaultListModel<String> listModel = new DefaultListModel<>();
private static JList<String> list = new JList<>(listModel);

public static void execute() {
    //some code
    startTimer(activeProfile.getRefreshDelay() * 6000, activeProfile.getRefreshDelay() * 6000);
    show();
}

public static void fillEpisodes() {
    int i = 0;
    for (String entry : Episodes.getList()) {
        listModel.add(i, entry);
        i++;
    }
}
private静态DefaultListModel listModel=new DefaultListModel();
私有静态JList列表=新JList(listModel);
公共静态void execute(){
//一些代码
startTimer(activeProfile.getRefreshDelay()*6000,activeProfile.getRefreshDelay()*6000);
show();
}
公共静态无效集(){
int i=0;
for(字符串条目:剧集.getList()){
添加(i,条目);
i++;
}
}
TimerController类:
公共类TimerController扩展TimerTask{
@凌驾
公开募捐{
MainFrame.getListModel().clear();
MainFrame.fills();

对于(int i=0;我必须弄清楚这一点,首先列表显示正确,然后它在空和正确之间交替显示?@tobias_k yea,每秒钟它再次填充一次。可能我的listModel有问题?甚至System.out.println(list.getModel)显示每个计时器的所有项:nedded添加一个列表模型,填充它,然后用它替换现有的。模型更改后Swing重新绘制列表,类似这样:)
 public class TimerController extends TimerTask{

    @Override
    public void run() {
        MainFrame.getListModel().clear();
        MainFrame.fillEpisodes();
        for(int i=0;i<MainFrame.getListModel().size();i++){
            System.out.println(MainFrame.getListModel().getElementAt(i));
        }
        MainFrame.show();
    }
}