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

ale*_*oot 6 java swing hashmap jlist

我想创建一个包含Hashtable of String和object的条目的JList:

Hashtable<String,Object>
Run Code Online (Sandbox Code Playgroud)

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

可能吗 ?怎么做到呢 ?

tra*_*god 5

ListModel通过扩展实现接口AbstractListModel.使用派生模型创建您的JList.另请参见如何使用列表.


dog*_*ane 5

使用您的密钥集为您Hashtable的数据JList:

Hashtable<String, Object> table = new Hashtable<String, Object>();
JList list = new JList(table.keySet().toArray());
Run Code Online (Sandbox Code Playgroud)

你也可以打电话:

list.setListData(table.keySet().toArray())
Run Code Online (Sandbox Code Playgroud)


use*_*300 5

Hashtable是"旧的",因此您应该考虑使用HashMap.

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

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