2009-10-19 5 views
1

Java API를 살펴 보았지만이 문제를 해결할 행운이 없었습니다. JList를 시작한 후에는 '데이터'문자열을 바꾸거나 다시로드 할 수있는 방법이 있습니까? 또한 JComboBox를 사용하여 동일한 작업을 수행하려고했습니다.JList & JComboBox 데이터를 다시 할당합니다.

String[] data = {"one", "two", "three", "four"}; 
JList dataList = new JList(data); 

답변

3

배열을 사용하는 JList의 유틸리티 생성자 중 하나를 사용하고 있습니다. List는 ListModel에 의해 지원됩니다.

new AbstractListModel() { 
      public int getSize() { return listData.length; } 
      public Object getElementAt(int i) { return listData[i]; } 
} 

listDatadata 설정됩니다 여기서 유틸리티 생성자가하는 AbstractListModel의 구현을 만들려면 다음을 사용합니다. 동일한 작업을 수행하여 dataList.setModel()에 전달할 수 있습니다. 이 기능이 단순한 프로토 타입 이상의 것이면, ListModel의 본격적인 구현을 작성하는 것이 가장 좋습니다.

참고로 여기는 JList tutorial from Sun입니다.

DefaultComboBoxModel 클래스에 매개 변수로 Object 배열을 사용하는 생성자가 있으므로 JComboBox가 조금 더 간단합니다. 데이터를 대체하려면 다음을 호출하면됩니다.

myComboBox.setModel(new DefaultComboBoxModel(data)); 
+0

감사합니다. 그것은 물건을 조금 더 분명하게합니다. 나는 배열을 대체하는 방법을 찾고 있었어요 ... –

+0

감사 akf, 그것을 모두 가지고있어! –

2

목록 데이터는 ListModel (get/set Model 메소드를 통해 액세스 가능)에 저장됩니다. 새로운 ListModel (ListModel의 구현)을 작성해, setModel 메소드를 사용해 JList에 건네 주면됩니다.

+0

처음에는 어떻게 문자열로 설정합니까? –