2011-01-02 5 views
45

Java를 사용하여 JTable의 내용을 지우려면 어떻게해야합니까?JTable을 지우는 방법

+0

확인이 질문 : http://stackoverflow.com/questions/4439210/deleting-datas-in-the-table-in-gui/4439297#4439297 –

+0

Dupe : http://stackoverflow.com/questions/3879610/clear-contents-of-a-jtable –

답변

12

기본적으로 JTable에 사용하는 TableModel에 따라 다릅니다. 당신이 DefaultTableModel를 사용하는 경우 다음 두 가지 방법으로 그것을 할 수 있습니다 :

DefaultTableModel dm = (DefaultTableModel)table.getModel(); 
dm.getDataVector().removeAllElements(); 
dm.fireTableDataChanged(); // notifies the JTable that the model has changed 

또는

DefaultTableModel dm = (DefaultTableModel)table.getModel(); 
while(dm.getRowCount() > 0) 
{ 
    dm.removeRow(0); 
} 

은 자세한 내용

+3

기본 데이터 벡터를 변경하는 경우 테이블 이벤트를 발생시키는 것을 잊지 마십시오. 그렇지 않으면 JTable은 변경되었음을 알 수 없습니다 ... – dacwe

+1

-1, 두 가지 제안이 잘못되었습니다. 첫 번째는 위에서 언급 한 이유 때문입니다. 두 번째 행은 각 행을 제거 할 때 변수 i가 계속 증가하므로 행을 건너 뜁니다. 루프를 만들려면 더 이상 행이 없을 때까지 행 0을 계속 제거하면됩니다. 그러나 Carlos는 가장 간단한 솔루션을 게시했습니다. – camickr

+0

Camickr, 당신 말이 맞아요. 이 문제를 해결하기 위해 내 대답을 변경했습니다. 여전히 Carlos의 솔루션은 구현하기가 더 쉽습니다. –

1

그것은 당신이 사용하는 모델에 따라 달라 DefaultTableModel의 JavaDoc을 참조 귀하의 JTable.

54

표에 사용 된 TableModel에서 데이터를 제거해야합니다.

DefaultTableModel을 사용하는 경우 행 수를 0으로 설정하면됩니다. 그러면 행이 삭제되고 TableModelEvent이 실행되어 GUI가 업데이트됩니다.

JTable table; 
… 
DefaultTableModel model = (DefaultTableModel) table.getModel(); 
model.setRowCount(0);

기타 TableModel을 사용하는 경우 문서를 확인하십시오.

+0

그냥 여기에 추가 ... 즉시 변경을 보려면 행 수를 0으로 설정 한 후'table.revalidate();'를 호출해야했다. 그렇지 않으면'JTable '을 클릭하기 전까지 변경 사항을 보지 못했다. '. – Sakiboy

+0

Jim-Dingo는 나를 위해'revalidate()'없이 잘 동작합니다 : [간단한 예제] (http://pastebin.com/iDgLeKPk)'DefaultTableModel'은 데이터가 변경되었을 때 뷰를 알려줍니다 -'setNumRows int)'이면, 행 수를 줄이면'fireTableRowsDeleted'를 호출합니다. –

5

열이없는 깨끗한 테이블을 가져와야했습니다. 나는 folowing을했다 :

jMyTable.setModel(new DefaultTableModel()); 
+0

빠르고 효과적인 솔루션이지만 헤더도 제거됩니다. 헤더를 제거하지 않는 옵션이 있으면 더 좋을 것입니다. 다른 게시물에있는 누군가가 하나씩 모든 행을 제거 할 것을 제안했습니다. 그러면 헤더를 유지할 것입니다. –

1

이것은 내가 찾은 가장 빠르고 쉬운 방법이다;

while (tableModel.getRowCount()>0) 
      { 
      tableModel.removeRow(0); 
      } 

이렇게하면 테이블 lickety 분할이 지워지고 새 데이터를 준비 할 수 있습니다.

1

당신은 jTable의 모든 셀을 지우고 새로운 빈 jTable처럼 만들고 싶다고 생각했습니다. 예를 들어, 테이블이 MyTable 인 경우 다음을 수행 할 수 있습니다.

DefaultTableModel model = new DefaultTableModel(); 
myTable.setModel(model); 
1

tMOdel.setRowCount(0);을 사용하면 빈 표를 얻을 수 있습니다.

DefaultTableModel tMOdel = (DefaultTableModel) jtableName.getModel(); 
tMOdel.setRowCount(0); 
+0

자세한 내용을 편집하십시오. 코드 전용 및 "시도하십시오"답변은 검색 가능한 콘텐츠가 없으므로 권장하지 않으며 누군가가 "시도해"야하는 이유를 설명하지 않습니다. 우리는 여기서 지식을위한 자원이되기 위해 노력합니다. – abarisone

0
((DefaultTableModel)jTable3.getModel()).setNumRows(0); // delet all table row 

이 시도 :