2010-10-02 67 views
1

好的,所以我正在做一个家庭作业,我正在使用SWING为Java项目制作一个GUI,并且我遇到了JList的麻烦。超级简单的java swing jlist问题,我只是无法弄清楚!

我有一个客户对象,我已经做了设置属性,我想将对象添加到TreeMap中。我想连接Treemap,以便映射中的任何和所有对象都将在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); 

感谢您的帮助!

+0

你应该看看swing教程(http://download.oracle.com/javase/tutorial/uiswing/components/list.html)。 – tangens 2010-10-02 15:39:49

回答

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); 

这样当你更新你的收藏,只需拨打revalidate()repaint()在JList和将太更新其内容。

1

,所以我工作的一个功课 分配

那么究竟什么是关于分配?您已经给我们提供了您尝试的解决方案,但由于我们不知道实际需求,因此我们无法确定您是否处于正确的轨道上。

你是否被迫使用TreeMap来存储对象?因为你不能直接访问对象,所以这不是一个用于ListModel的好集合。

或者仅仅是关于显示JList中的对象的数据的分配?如果是这样,那么你可以使用DefaultListModel。您只需要覆盖自定义对象的toString()方法,使列表中显示“name属性”。