我有这个类来表示组合框中的选择:
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中显示标签值,但是在数组超出范围之后能够检索id。
关于JComboBox渲染器的主题,the Java Swing tutorial says,
默认渲染器知道如何渲染字符串和图标。如果将其他对象放在组合框中,则默认渲染器会调用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()
语句从未发生过。{/ p>
有什么想法吗?
答案 0 :(得分:3)
toString()
实际上是__repr__
。
所以我的课现在看起来像:
class Choice(object):
def __init__(self, id, label):
self.id = id
self.label = label
def __repr__(self):
return self.label
答案 1 :(得分:2)
您应该在python类中覆盖__str__(self)
。