2013-03-28 2 views
1

버튼을 클릭하여 JTable 데이터를 새로 고치고 싶습니다.JTable 데이터 새로 고침 문제

문제는 JTable의 이전 데이터를 제거 할 수 없으며 새 데이터가 테이블에 추가된다는 것입니다. 나는 아래의 방법으로 오래된 데이터를 지우려고했지만 그 중 아무 것도 작동하지 않았다.

1. table.setModel(new DefaultTableModel()); 
2. ((DefaultTableModel)table.getModel()).setRowCount(0); 
3. ((DefaultTableModel)table.getModel()).fireTableDataChanged(); 
4. ((DefaultTableModel)table.getModel()).getDataVector().removeAllElements(); 
5. table.repaint(); 
6. model = (DefaultTableModel)table.getModel(); 
    while(model.getRowCount() > 0) { 
     model.removeRow(0); 
    } 
+2

나를 위해 1. 충분하다 – StanislavL

+0

아마도 모델을 변경 한 후에 JTable 구성 요소를 무효화하지 않았을 것입니다. –

+0

테이블을 무효화 할 필요가 없습니다. 모델을 변경하면 여러 이벤트가 발생합니다. –

답변

4

JTable에 대한 새로 고침 버튼은 매우 의심 스럽습니다. JTables가 데이터가 추가되거나 제거 될 때마다 새로 고쳐 져야하므로 올바르게 데이터를 추가하지 않는다고 생각합니다.

DefaultTableModel를 사용할 때 나는 몇 가지를 확인 할

:

  1. 만 사용하여 데이터를 추가로 확인을 addRow
  2. 데이터만을 사용하여 데이터를 제거 insertRow
  3. 사용하여 삽입 할
  4. removeRow

절대 내부 벡터를 직접 수정하십시오. 이벤트가 발생하지 않으며 새로 고침 버튼이 있습니다. 나는 왜 그들이 그것을 폭로하는지조차 모른다. JavaDocs는 적어도 이에 대해 특별히 경고해야합니다.

다른 모든 방법으로 오류가 발생하면 디버거가 실행되고 어떤 결과가 발생하는지 확인하십시오.

+0

제안 해 주셔서 감사합니다. JButton을 추가하여 JTable의 행을 제거했습니다. 내가 removeRow 메서드를 사용하고 그것은 작동합니다! 그러나 또 다른 문제가 발생했습니다. addRow 메소드를 사용하여 JTable에 새 데이터를로드하면 이전에 제거 된 데이터가 테이블에 다시 표시됩니다. 디버거를 작동시켜 어떻게 발생하는지 봅니다. – kimi

+0

참고 사항 [대답] (http://stackoverflow.com/a/15444816/230513). – trashgod

0

여기에 더 많은 코드가 적절할 수 있습니다. 이 방법과 주문을 어디서 부르는지 정확히 말하기가 어렵습니다. 모델을 변경 한 다음 fireTableDataChanged()를 호출하면 올바른 TableModel을 업데이트했다고 가정하면 작동합니다. 테이블을 사용하기위한 좋은 자바 튜토리얼은 다음과 같습니다.

+0

답장을 보내 주셔서 감사합니다. 내 프로그램에서 새로운 데이터 모델을 만들고 JTable로 설정했다. 그런 다음 fireTableDataChanged() 메서드를 호출합니다. 그러나 이전 데이터는 여전히 테이블에 존재합니다. 내 JDK 버전은 1.7.0_09입니다. 나는 도움이되는 것이 있는지보기 위해 튜토리얼을 점검 할 것이다. – kimi

+0

아니요, 영업일의 마지막 옵션과 두 번째 질문 만 – mKorbel