Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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
Java 为什么我的DefaultListModel没有出现在我的JList上?_Java_Swing_Arraylist_Jlist_Defaultlistmodel - Fatal编程技术网

Java 为什么我的DefaultListModel没有出现在我的JList上?

Java 为什么我的DefaultListModel没有出现在我的JList上?,java,swing,arraylist,jlist,defaultlistmodel,Java,Swing,Arraylist,Jlist,Defaultlistmodel,我有以下方法 DefaultListModel getModelForCabin(Cabin cabin) { List<Camper> listAdded= new ArrayList<Camper>(getOrCreateGroup(cabin)); DefaultListModel<Camper> dfm= new DefaultListModel<Camper>(); for(Camper c: lis

我有以下方法

           DefaultListModel getModelForCabin(Cabin cabin) {

 List<Camper> listAdded= new ArrayList<Camper>(getOrCreateGroup(cabin));

 DefaultListModel<Camper> dfm= new DefaultListModel<Camper>();
    for(Camper c: listAdded){
        if(!dfm.contains(c)){
            dfm.addElement(c);
        }

    }
    //System.out.println(listAdded);
    //System.out.println(dfm);

    return dfm;
}
在该方法中,如果我打印dfm和listAdded,如系统打印行中所示,它将同时显示这两个

如果我打这个

System.out.println(getModelForCabin((Cabin)comboBox.getSelectedItem());   
它还打印出模型

但它不会做的是将模型添加到JList。我尝试过改变代码,删除JList并创建一个新的,然后重新排列代码

不管我做什么,它都不会起作用

因此,我的列表可以很好地打印,我的DefaultListModel可以很好地打印,我的HashMap可以很好地打印客舱和露营车,但是JList不会打印模型

增加:

     JScrollPane scrollPane_1 = new JScrollPane();
    scrollPane_1.setBounds(361, 205, 296, 339);
    getContentPane().add(scrollPane_1);

     list = new JList(getModelForCabin((Cabin)comboBox.getSelectedItem()));
    scrollPane_1.setViewportView(list);

我发现问题是因为我没有设定模型。如果模型是本地DefaultListModel,则必须使用setModel方法在主类中设置它

我需要引用JList,然后像这样执行setModel

            list.setModel(getModelForCabin((Cabin)comboBox.getSelectedItem()));
其中,list是JList的变量,getModelForCabin(Cabin Cabin)是返回DefaultListModel的方法


它被添加到add按钮的操作侦听器中,以及在打开类时创建的刷新按钮中

我将验证
getmodelforcab
是否确实在向
DefaultListModel
添加元素。如果不这样做,考虑提供一个1)java GUI必须在不同的区域使用不同的PLAFs来处理不同的OS、屏幕大小、屏幕分辨率等。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。2) 使用缩进代码行和代码块的逻辑和一致形式。缩进的目的是使代码流更易于遵循。。。。3) 在源代码中只需要一行空白就可以了。
{
之后或
}
之前的空行通常也是多余的。我已经回答了这个问题,它是在文章中添加元素。我用纯文本将默认列表模型打印到屏幕上,并显示出来,但在JList面板上,它保持空白。好的,我编辑了问题,以尽可能少地包含代码,以了解问题是什么。模型和阵列工作正常。该方法工作正常,并返回正确的结果。但是,JList不会打印它。
            list.setModel(getModelForCabin((Cabin)comboBox.getSelectedItem()));