Как я могу добавить ключи LinkedHashMap в JList? - PullRequest
1 голос
/ 05 июня 2009

У меня есть LinkedHashMap<String,Object>, и мне было интересно, какой самый эффективный способ поместить часть String каждого элемента в LinkedHashMap в JList.

Ответы [ 3 ]

1 голос
/ 05 июня 2009

Если jList не чувствителен к изменениям исходной карты, то оригинальный метод, который вы использовали, подходит (лучше, чем использование Vector, у которого есть дополнительный уровень синхронизации).

Если вы хотите, чтобы jList изменялся при изменении карты, вам придется написать свою собственную ListModel (что не так сложно). Вам также придется выяснить, как узнать, когда карта изменится.

1 голос
/ 05 июня 2009

Вы также можете использовать метод setListData (Vector) :

jList1.setListData(new Vector<String>(map.keySet())); 

Используя каждый из методов setListData, вы создаете копию фактических данных, поэтому изменения в карте не будут отражены в списке. Вместо этого вы можете создать пользовательский ListModel и передать его методу setModel, но потому, что нет способа получить доступ к произвольному элементу LinkedHashMap по индексу это, вероятно, невозможно.

0 голосов
/ 05 июня 2009

Нашел этот способ сделать это сразу после того, как я ответил на вопрос, подумал, что я поставлю это здесь для сообщества Я думаю, что это самый эффективный способ сделать это, но я, безусловно, открыт для новых предложений.

jList1.setListData(LinkedHashMap.keySet().toArray());
...