【问题标题】:Editting or Refreshing JList编辑或刷新 JList
【发布时间】:2011-10-23 14:31:44
【问题描述】:

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

但我无法将新列表分配给当前列表。

你有什么建议,我应该如何解决这个问题?

谢谢。

【问题讨论】:

  • valueChanged 属于哪个类?无论如何,听起来您在未显示的代码中做错了什么 - sscce 的时间

标签: java swing jlist


【解决方案1】:

我要么实现自己的ListModel,要么使用JGoodies Binding 将数据绑定到列表。使用 JGoodies 时,您的视图模型可以在您的数组内容更改时触发PropertyChangeEvent,然后您的视图将自动更新。例如

Bindings.bind(myJList, new SelectionInList<String>
    (beanAdapter.getValueModel("listContents"),
     beanAdapter.getValueModel("listSelection")));

具有一个视图模型类,该类具有一个用于列表内容的属性和一个用于当前选择的属性。

【讨论】:

    猜你喜欢
    • 2018-02-23
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 2012-11-08
    • 2014-11-17
    • 1970-01-01
    相关资源
    最近更新 更多