java - 编辑或刷新 JList

标签 java swing jlist

我有一个简单的幻灯片程序,在我的应用程序的左侧,有一个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/

相关文章:

java - 如何根据随机结果更改骰子滚轮的ImageView

java - 包私有(private)类中的 `public` 修饰符

java - 排除 jar 命令中选定的包 - 构建脚本

java - 右键单击选择文本 JTextPane

java swing 裁剪问题

java - 当我将逻辑从 Servlet doPost 方法移至我自己的类时出现 UnsupportedEncodingException

java - 带有问答系列的多项选择测试 GUI

java - 在 JList 失去焦点后保留 JList 选择?

java - 如何解决java swing中的一键按下延迟问题?

java - 带有提供信息的列表的 JFrame