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()));