Как я могу создать JList, который содержит записи Hashtable из String и Object? - PullRequest
6 голосов
/ 05 января 2012

Я хочу создать JList, содержащий записи Hashtable of String и объекта:

Hashtable<String,Object>

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

Возможно ли это? Как это можно сделать?

Ответы [ 4 ]

5 голосов
/ 05 января 2012

Hashtable является "старым", поэтому вам следует рассмотреть возможность использования вместо него HashMap.

Вы можете получить коллекцию всех значений в Hashtable, вызвав values ​​(). К сожалению, я неправильно понял ваш вопрос, замените его на keySet (). Если вы довольны отображением их в JList с использованием их метода toString () (например, они являются строками), просто добавьте их все в JList. К сожалению, конструкторы JList, по крайней мере, в J6, не берут Коллекции (моя любимая мозоль - сколько лет было Коллекций ???), поэтому вам придется немного поработать там.

Одно предупреждение. Hashtable и HashMap упорядочивают свои записи довольно непредсказуемым образом. Таким образом, порядок значений в JList почти наверняка будет не тем, который вам нужен. Рассмотрите возможность использования LinkedHashMap или TreeMap для поддержания более разумного порядка.

5 голосов
/ 05 января 2012

Используйте набор ключей вашего Hashtable для данных в вашем JList:

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

Вы также можете позвонить:

list.setListData(table.keySet().toArray())
5 голосов
/ 05 января 2012

Реализация интерфейса ListModel путем расширения AbstractListModel. Используйте производную модель для создания вашей JList. См. Также Как использовать списки .

3 голосов
/ 05 января 2012

Вы можете реализовать интерфейс ListModel, чтобы делать все что угодно. Создайте класс, который реализует его и удерживает желаемый HashMap. Обратите особое внимание на реализацию метода getElementAt.

...