Отображение в Jcombo псеводнима значения

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#1
Здравствуйте все!
Возник следующий вопрос - есть пары код - название, например:
1 - красный
2 - жёлтый
3 - зелёный
Как реализовать, чтобы в списке выбора JCombo отображались названия, а хранился код?
Пытаюсь реализовать JTable, у которой значения одного столбца выбираются из комбы. Должны отображаться названия, а сохраняться коды.
Не судите строго - в java я новичок.
 
S

skysun

Гость
#2
создай класс наподобие:
Код:
class XXX{
int id;
String color;
public toString(){return color;}
}
И храни объекты класса XXX в JCombo
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#3
создай класс наподобие:
Код:
class XXX{
int id;
String color;
public toString(){return color;}
}
И храни объекты класса XXX в JCombo
Спасибо, но это немного не то. Данные хранятся в JTable, а JComboBox используется как editor. В общем обошёлся так - написал рендеры для нужного столбца таблицы и для комбы, а тип данных оставил String. Может коряво, но работает.
 
J

jCoder

Гость
#4
Удобнее всего здесь, я думаю было бы воспользоваться коллекционным классом (Collection) из пакета java.util. Этот пакет содержит класс HashMap (хэш-таблица), эта структура данных хранит пары ключ- значение. С помощью методов: Object put(Object k, Object v) и Object get(Object v), можно хранить и извлекать данные из хэш-таблицы. Например:

// Создаешь объект HashTable
HashMap hm = new HashMap();
...
// Потом заполняешь его
hm.put("красный", "твой_код1"); // названия цаетов здесь
hm.put("зеленый", "твой_код2"); // выступают в качестве ключей
hm.put("желтый", "твой_код3");
...
// Ну, а далее потом уже извлекаешь данные с помощью метода get()
(нужный_тип) hm.get("красный"); // ключ ты можешь возвращать из JCombo,
... // не забудь приводить возвращаемый объект
и.т.д. // к необходимоому типу (по умолчанию возвращается Object)

Да, и вот еще, примитивные типы в качестве значения хэш-таблицы использовать нельзя (только объекты), их нужно оборачивать в соответствующие классы "обертки" Integer, Double, Boolean и.т.д. :D