如何创建一个包含字符串和对象哈希表条目的 JList?
我想创建一个包含字符串和对象的哈希表条目的 JList:
Hashtable<String,Object>
JList 元素应包含哈希表条目并显示作为字符串的条目键的值...
这可能吗?怎么办呢?
I want to create a JList that contains entries of a Hashtable of String and object :
Hashtable<String,Object>
the JList element should contain the hashtable entry and display the value of the entry key that is a string ...
Is it possible ? How can it be done ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
通过扩展
AbstractListModel
实现ListModel
接口。使用派生模型创建您的JList
。另请参阅如何使用列表 。Implement the
ListModel
interface by extendingAbstractListModel
. Use the derived model to create yourJList
. See also How to Use Lists.将
Hashtable
的键集用于JList
中的数据:您还可以调用:
Use the keyset of your
Hashtable
for the data in yourJList
:You can also call:
Hashtable 是“旧的”,因此您应该考虑使用 HashMap。
您可以通过调用values() 来获取Hashtable 中所有值的集合。哎呀 - 我误读了你的问题,将其更改为 keySet()。如果您愿意使用其 toString() 方法在 JList 中显示它们(例如,它们是字符串),只需将它们全部添加到 JList 中即可。不幸的是,JList 构造函数,至少在 J6 中,不接受 Collections(我的小烦恼 - Collections 已经存在多少年了???),所以你必须在那里做一些工作。
一个警告。 Hashtable 和 HashMap 以一种相当不可预测的方式对它们的条目进行排序。因此 JList 中值的顺序几乎肯定不是您想要的顺序。考虑使用 LinkedHashMap 或 TreeMap 来维护更合理的排序。
Hashtable is "old", so you should consider using a HashMap instead.
You can get a Collection of all the values in the Hashtable by calling values(). OOPS - I misread your question, change that to keySet(). If you are happy with displaying them in the JList using their toString() method (e.g., they are Strings), just add them all to the JList. Unfortunately, the JList constructors, at least in J6, do not take Collections (pet peeve of mine - how many years have Collections been around???), so you'll have to do a little work there.
One warning. Hashtable and HashMap order their entries in a pretty unpredictable manner. So the order of the values in the JList will almost certainly not be the order you want. Consider using a LinkedHashMap or a TreeMap to maintain a more reasonable ordering.
您可以实现 ListModel 接口来执行您想要的任何操作。创建一个类来实现它并保存您想要的 HashMap。请特别注意
getElementAt
方法的实现。You can implement the ListModel interface to do anything you want. Create a class that implements it and holds onto your desired HashMap. Pay particular attention to the
getElementAt
method implementation.