好的,所以我正在做家庭作业,我正在使用SWING为Java项目制作GUI,而且我遇到了JList的麻烦。
我有一个客户对象,我已经创建并设置属性,我想将对象添加到TreeMap中。我想挂钩Treemap,以便地图中的任何和所有对象都会在JList中填充(无论如何都是name属性)。
我已经做了很多工作,我看到很多关于从头开始编写这些东西但很少涉及Swing实现。我将我的客户对象放入我的地图中,然后我希望我的JList能够反映地图的内容,但我不知道如何将其连接起来。
customers.put(c.getName(), c);
this.customerList.(What can I do here? add Customer object?? I can't find what I need);
感谢您的帮助!!!
答案 0 :(得分: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()
或repaint()
,它也会更新其内容。
答案 1 :(得分:1)
所以我正在做作业 分配
那么这项任务究竟是什么?您已经向我们提供了您尝试过的解决方案,但由于我们不知道实际要求,因此我们无法判断您是否在正确的轨道上。
您是否被迫使用TreeMap存储对象?因为这不是一个用于ListModel的好集合,因为你无法直接访问这些对象。
或者只是关于在JList中显示来自对象的数据?如果是这样,那么您可以使用DefaultListModel。您需要做的就是覆盖自定义对象的toString()方法,以便在列表中显示“name属性”。