1

好的,所以我正在做家庭作业,我正在使用 SWING 为 Java 项目制作 GUI,但我在使用 JList 时遇到了麻烦。

我有一个我已经制作并设置属性的客户对象,我想将该对象添加到 TreeMap 中。我想连接 Treemap,以便地图中的任何和所有对象都将填充(无论如何都是 name 属性)在 JList 内。

我做了很多环顾四周,看到很多关于从头开始编写这些东西的内容,但很少处理 Swing 实现。我将客户对象放入我的地图中,然后我希望我的 JList 反映地图的内容,但我不知道如何连接它。

    customers.put(c.getName(), c);
    this.customerList.(What can I do here? add Customer object?? I can't find what I need);

谢谢你的帮助!!!

4

2 回答 2

1

您需要创建一个自定义列表模型,该模型返回要放入 JList 每一行的对象。TreeMap 不能用索引访问,所以你需要别的东西。所以总体思路是这样的:(来自 JList javadoc):

ListModel bigData = new AbstractListModel() {
    ArrayList customers;
    public int getSize() { return customers.size() }
    public Object getElementAt(int index) { return customers.get(index); }
};

JList bigDataList = new JList(bigData);

这样,当您更新您的收藏时,只需调用JList 上的revalidate()or repaint(),它也会更新其内容。

于 2010-10-02T16:27:25.357 回答
1

所以我正在做家庭作业

那么这个任务具体是关于什么的呢?您已经向我们提供了您尝试的解决方案,但由于我们不知道实际需求,我们无法判断您是否在正确的轨道上。

您是否被迫使用 TreeMap 来存储对象?因为这不是用于 ListModel 的好集合,因为您无法直接访问对象。

或者任务只是关于显示来自 JList 中的对象的数据?如果是这样,那么您可以使用 DefaultListModel。您需要做的就是覆盖自定义对象的 toString() 方法,以使“名称属性”显示在列表中。

于 2010-10-03T03:59:18.367 回答