我有一个简单的幻灯片程序,在我的应用程序的左侧,有一个JList
显示当前应用程序上的幻灯片。我可以保存并加载幻灯片。问题是,当我尝试从XML文件加载幻灯片时,我无法删除JList中的所有项目,并添加它们。因为当我按model.removeAllElements();
删除元素然后尝试添加项目时;
for(int i=0; i<mL.size(); i++){
model.add(i, "Slide No: " + i);
slideCounter++;
}
然后调用valueChanged
函数,因为我从该函数中的arrayList获取元素,它给出了ArrayIndexOutOfBoundsException
因此,在我的load方法中,我创建了一个新的空列表(dMode),然后用幻灯片数量初始化列表:
list = new JList(dMode);
jScrollPane1 = new JScrollPane(list);
但我无法将新列表分配到当前列表。
您有什么建议,我该如何解决?
感谢。
答案 0 :(得分:1)
我要实现自己的ListModel,要么我会使用JGoodies Binding将数据绑定到列表中。使用JGoodies时,只要数组内容发生更改,您的视图模型就会触发PropertyChangeEvent
,然后您的视图会自动更新。 E.g。
Bindings.bind(myJList, new SelectionInList<String>
(beanAdapter.getValueModel("listContents"),
beanAdapter.getValueModel("listSelection")));
使用视图模型类,该类具有列表内容的属性,以及当前选择的属性。