我想创建一个包含Hashtable of String和object:
的条目的JListHashtable<String,Object>
JList元素应该包含哈希表条目并显示作为字符串的条目键的值...
有可能吗?怎么办呢?
答案 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
方法实现。