Java 如何创建包含字符串和对象哈希表条目的JList?

Java 如何创建包含字符串和对象哈希表条目的JList?,java,swing,hashmap,jlist,Java,Swing,Hashmap,Jlist,我想创建一个包含字符串和对象哈希表条目的JList: Hashtable<String,Object> 哈希表 JList元素应该包含哈希表条目,并显示条目键的值,该键是一个字符串 可能吗?如何做到这一点?通过扩展AbstractListModel实现ListModel接口。使用衍生模型创建您的JList。另请参见。您可以实现ListModel接口来执行任何您想要的操作。创建一个实现它的类,并保存到所需的HashMap上。请特别注意getElementAt方法的实现。使用哈希表的

我想创建一个包含字符串和对象哈希表条目的JList:

Hashtable<String,Object>
哈希表
JList元素应该包含哈希表条目,并显示条目键的值,该键是一个字符串


可能吗?如何做到这一点?

通过扩展
AbstractListModel
实现
ListModel
接口。使用衍生模型创建您的
JList
。另请参见。

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

使用
哈希表的键集查看
JList中的数据:

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

Hashtable是“旧”的,所以你应该考虑使用一个哈希表。

通过调用values(),可以获得哈希表中所有值的集合。哦,我误解了你的问题,把它改成keySet()。如果您喜欢使用它们的toString()方法在JList中显示它们(例如,它们是字符串),只需将它们全部添加到JList中即可。不幸的是,JList构造函数(至少在J6中)不接受集合(我很恼火-集合已经存在多少年了?),因此您必须在那里做一些工作


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

也考虑一个<>代码> map < /Cord>实现,优先于<代码>哈希表。我不能,我必须使用一个哈希表,因为我必须处理一个旧的API。你需要按关键字排序的列表吗?不,不重要,但是可能会很好:)我喜欢这个解决方案的简单性。但是请注意,键集的顺序将是非常随机的,因此JList中项目的顺序将不是@aleroot所期望的。通过对
Map
界面进行编码,可以更自由地选择替代实现,例如
SortedMap
+1,但是。。。这比《罗布班和我的解决方案》更重要。但是,如果哈希表将随着时间的推移而改变,并且您需要动态更新JList,那么这就是方法。是的,JList将改变,因为用户可以与它交互,所以这就是方法。我问是因为我希望有一个更少的工作要做的解决方案,但不幸的是没有。谢谢大家的帮助。我将实现一个hastTableListModel;)。另请参见这篇文章,它围绕
Map
构建了一个
TableModel
list.setListData(table.keySet().toArray())