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