如何创建包含字符串和对象的Hashtable条目的JList?

时间:2012-01-05 18:07:04

标签: java swing hashmap jlist

我想创建一个包含Hashtable of String和object:

的条目的JList
Hashtable<String,Object>

JList元素应该包含哈希表条目并显示作为字符串的条目键的值...

有可能吗?怎么办呢?

4 个答案:

答案 0 :(得分:5)

通过扩展ListModel来实施AbstractListModel界面。使用派生模型创建JList。另请参阅How to Use Lists

答案 1 :(得分:5)

Hashtable的密钥集用于JList

中的数据
Hashtable<String, Object> table = new Hashtable<String, Object>();
JList list = new JList(table.keySet().toArray());

您也可以致电:

list.setListData(table.keySet().toArray())

答案 2 :(得分:5)

Hashtable是“旧的”,因此您应该考虑使用HashMap。

您可以通过调用values()来获取Hashtable中所有值的集合。 OOPS - 我误读了您的问题,将其更改为keySet()。如果您对使用他们的toString()方法在JList中显示它们感到满意(例如,它们是字符串),只需将它们全部添加到JList即可。不幸的是,JList构造函数,至少在J6中,没有采用集合(我的宠儿 - 集合多少年了?),所以你必须在那里做一些工作。

一个警告。 Hashtable和HashMap以非常不可预测的方式对它们的条目进行排序。因此,JList中值的顺序几乎肯定不是您想要的顺序。考虑使用LinkedHashMap或TreeMap来维持更合理的排序。

答案 3 :(得分:3)

您可以实现ListModel接口以执行任何操作。创建一个实现它的类并保存到您想要的HashMap中。特别注意getElementAt方法实现。