2012-02-10 2 views
1

에 속성을 추가 우리가 인스턴스화 된 객체의 다음과 같은 배열을 말해봐 :특정 인스턴스가 JList의

SomeClass[] items = {new SomeClass("Apples", 1.99f, 0.311f), 
new SomeClass("Oranges", 0.99f, 0.396f), 
new SomeClass("Bananas",2.99f,2.27f)}; 

생성자를 가정하는 문자열 이름, 플로트 가격입니다 무게를 떠.

그래서 지금 내가하는 JList를 작성하고 JScrollPane의에 넣어 : 이름 만 속성이 표시되도록

itemsList = new JList(items); 
ScrollPane itemsListScrollPane = new JScrollPane(itemsList); 

스크롤 창에 표시 무엇 오버라이드 (override) 할 수있는 방법이 있나요 (및 폐기 다른 속성들)을 SomeClass 클래스의 toString() 메소드를 오버라이드시키지 않고 그렇게 할 수 있습니다.

Apples 
Oranges 
Bananas 

질문이 있으시면 분명히 말씀 드리겠습니다.

감사합니다.

편집 : 그냥 예를 들어, 이름 속성의 문자열 값을 반환하는 getName()이라는 SomeClass 메소드를 사용하여 JList에 표시 만하도록하는 방법이 있습니까?

+0

왜 toString() 메서드를 재정의하지 않으시겠습니까? 사용자가 드롭 다운 목록을 표시하기 위해 마우스를 사용하지 않고 "O"를 입력하여 오렌지를 선택할 수있는 이점이 있습니다. – camickr

+0

이미 toString() 메서드를 사용하고 있기 때문에. – user1202888

답변

3

JList에서 ListCellRenderer을 설정할 수 있습니다. 원하는 것을 무엇이든 만들 수 있습니다. See also the official doc about JList

+0

안녕하세요 기ume, 그 덕분에, 나는 [this] (http://www.java2s.com/Code/Java/Swing-JFC/UseJListcomponenttodisplaycustomobjectswithListCellRenderer.htm)를 확인했습니다. 그냥 명확히하고 싶은데, 문자열 값을 반환하는 getName()이라는 SomeClass 메서드를 사용하여 JList에 표시하는 방법을 사용하는 방법이 있습니까? – user1202888

+0

렌더러는 원하는대로 할 수 있습니다. getName() 메소드를 호출하여 괜찮은 레이블의 텍스트를 설정하려는 경우. – camickr

관련 문제