2014-11-01 6 views
-1

그래서 메서드를 호출 할 때 데이터를 추가하는 JList가 있습니다. JList에서 데이터를 새로 고칠 수 있기를 원하지만 JList에서 제거하고 제거 할 때마다 새 데이터가 이전 데이터에 추가됩니다. 따라서 기본적으로 버튼을 누르면 메서드가 호출되고 JList가 업데이트되어야합니다 (이전 데이터가 지워지고 새 데이터가 읽혀집니다).JList 지우기

모델에서 데이터를 지우려고했는데 크기를 요청하면 0이지만 여전히 첨부되어 있습니다. List 자체에서 삭제를 시도했습니다. 내 견과류를 몰고 가면 도움이 될 것입니다. 이것은 기본적으로 모든 메소드 호출시 "새로운 데이터"가 변경되는 방식입니다. 그것은 아무것도 할 가능성이있는 동안, 시작하기

DefaultListModel model = new DefaultListModel(); 
JList list = new JList(model); 

public void method(){ 
if(model.size() > 0){ 
model.removeAllElements(); 
model.clear(); 
list.removeAll(); 
} 

model.addElement("new Data"); 
model.addElement("new Data"); 

} 
+0

전체 코드를 입력하십시오. 여기서 쓴 것은 효과가 있습니다. 당신이하고있는 뭔가가 있고 우리는 보지 못하고 있습니다. – alterfox

답변

3

그것은 구성 요소와 엉망이 방법을 현명 아니라, list.removeAll를 호출하지 않습니다.

가장 간단한 해결책은 바로 JListListModel ...

list.setModel(new DefaultListModel()); 

이나, 귀하의 경우, 뭔가 같은 ...

model = new DefaultListModel(); 
list.setModel(model); 
model.addElement("new Data"); 

이가 작동하지 않는 경우 대체하는 것입니다 , 변수를 음영 처리하는 것이므로이 경우에는 문제를 나타내는 runnable example을 제공하는 것이 좋습니다. 이렇게하면 혼란이 줄어들고 응답이 향상됩니다.

+0

답장을 보내 주셔서 감사합니다. 방금 첫 번째 솔루션을 추가하면 JList가 지워지지 만 제공 한 두 번째 코드 블록을 사용하면 데이터가 이전 데이터와 혼합됩니다. – jjamzn

+1

새 모델을 만들 필요가 없습니다. 기존 코드에 'clear'를 호출하면 충분하지만 OP 코드에는 제공되지 않은 것이 있습니다. – alterfox

+0

내가 제공 한 코드는 추가 데이터 부분을 뺀 것과 거의 동일합니다.이 경우에는 필요하지 않습니다. 다른 아이디어? – jjamzn