У меня есть этот класс для представления вариантов в выпадающем списке:
class Choice(object):
def __init__(self, id, label):
self.id = id
self.label = label
def toString(self):
print "in Choice.toString" #for debugging
return self.label
У меня есть массив Choice
объектов, и я хочу показать значения меток в JComboBox, но могу получитьидентификатор позже, после того, как массив вышел из области видимости.
Что касается средств визуализации JComboBox, в руководстве по Java Swing написано ,
Средство визуализации по умолчанию знает, как отображать строки и значки.Если вы помещаете другие объекты в поле со списком, средство визуализации по умолчанию вызывает метод toString для предоставления отображаемой строки.
Итак, учитывая, что я добавил toString()
метод к своему Choice
класс, я должен просто быть в состоянии сделать это:
choices = [Choice(1, 'foo'), Choice(3, 'bar'), Choice(5, 'baz')]
combo = JComboBox(choices)
, а затем позже:
pickedId = combo.getSelectedItem().id
Однако текст, который отображается в моем комбо, похож на <command.Choice object at 0x2>
, иэтого print
заявления, которое я вставил в Choice.toString()
, никогда не происходит.
Есть идеи?