나는 콤보 상자에서 선택을 대표하는이 클래스가 있습니다JComboBox에 전달한 객체에서 swing을 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 메서드를 호출하여 표시 할 문자열을 제공합니다. 그러나
pickedId = combo.getSelectedItem().id
:
choices = [Choice(1, 'foo'), Choice(3, 'bar'), Choice(5, 'baz')] combo = JComboBox(choices)
하고 나중에 :
그래서, 내 Choice
클래스에 toString()
방법을 추가 한 주어진, 난 그냥이 작업을 수행 할 수 있어야한다 내 콤보에 표시되는 텍스트는 <command.Choice object at 0x2>
과 같으며 Choice.toString()
에 입력 한 내용의 print
은 발생하지 않습니다.
아이디어가 있으십니까?
(: 같은
그래서 내 클래스는 이제 보이는 어쩌면 서명이 일치하지 않을 수도 있습니다). javap을 사용하여 컴파일 된 클래스를 검사 해보십시오. – JimN