我有這個類來表示在組合框中選擇:爲什麼不在我傳遞給JComboBox的對象上調用toString()?
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()
從未發生過。
任何想法?
我不熟悉Python/Jython中,但也許您創建的toString()方法不延長「無效Object.toString()」(也許簽名不符)。嘗試使用javap檢查編譯的類。 – JimN