2013-04-25 2 views
5

에 요소를 추가? 나는 다음과 같은 것을 시도했다 :는이 같은 고객의 이름을 포함하는 객체의 배열을 가지고하는 JList

for (int i=0;i<Customers.length;i++) 
{ 
    jList1.add(Customers[i].getName()); 
} 

나는 항상 실수를 범한다. 어떻게 해결할 수 있을까요? NetBeans에서 작업하고 있습니다. 가 나타납니다 오류 내 방법 getName이 문자열에 고객의 이름을 반환 그런데 "(문자열). 추가 찾을 수 없습니다 적합한 방법이다 .

+1

어떤 종류의 오류가 발생합니까? 또한 더 많은 코드가 귀하의 질문을 이해하기 쉽게 만듭니다. – Abbas

+0

뭔가를 추가하려면 잘못된 목록 냄새가납니다! – skuntsel

+1

[목록 사용 방법] (http://docs.oracle.com/javase/tutorial/uiswing/components/list.html) – Howard

답변

1

JList에 직접 ListModel에 추가하기보다는 . 자체는 현재 당신이 목록의 내용에 영향을주지 않습니다 add 방법을 사용하고 DefaultListModel은 변경할 수 그래서 런타임에 업데이트 할 수 있습니다

선언 :..

JList<String> jList1 = new JList<String>(new DefaultListModel<String>()); 

추가 :

((DefaultListModel)jList1.getModel()).addElement(Customers[i].getName()); 
7

사용하고있는 add 방법은 그래서 확실히 필요하지 게다가, Container#add 방법이다. ListModel을 변경해야합니다.

DefaultListModel<String> model = new DefaultListModel<>(); 
JList<String> list = new JList<>(model); 

for (int i = 0; i < customers.length; i++){ 
    model.addElement(customers[i].getName()); 
} 

편집 :

나는 모델에 직접 이름을 추가하는 코드 스 니펫 (snippet)을 수정합니다. 따라서 사용자 정의 렌더러가 필요하지 않습니다.

+0

'model.addElement (customers [i] .getNmae()); '? –

+0

@AdegokeA 모델에 직접 데이터 요소를 추가하고 렌더러에서 표시 할 속성의 종류를 결정하는 편을 선호합니다. 그러나 질문에있는 코드와 좀 더 가깝게 일치시키고 싶다면 이름을 추가하고 목록에서 ''을 ''으로 바꾸고 모델 정의 – Robin

+0

을 @Robin으로 바꾸는 것이 더 쉬운 방법이 아닙니다. 그것? 나는 사용자에게 더 투명하다. 나는 다른 언어에서도 list.additem()을 넣는 것이 쉬웠다. – Little