2012-02-25 9 views
2

가능한 중복 :
Java Swing revalidate() vs repaint()자바 스윙 구성 요소는 상쾌한

나는 데이터베이스 응용 프로그램 (자바 + 오라클 11g의)에서 일하고 나는 재 검증 할 필요가 무엇인지 그리고 왜 알 필요가/다시 표시하여 올바른 표시를 얻으십시오. 다음과 같은 구성 요소가 있습니다 :

 JFrame { 
      JCardPanel{ 
      //card1: 
      JPanel { 
       JScrollPane1 { 
        { JTable1 } 
       } 
       JScrollPane2 { 
        { JTable2 } 
       } 
      } 
      //card2: 
      JDialog{ 
       (login window) 
      } 
     } 

이 순서로 "내포 된". JTables의 내용은 매우 자주 변경되며 올바르게 표시하는 방법을 모르겠습니다. 스윙 전문가가 아니므로 누군가 내가 새로 고침해야 할 힌트를주고, 어떻게하는지, 일어나는 일을 설명 할 수 있습니다.

+3

왜 다시 검증/다시 칠할 필요가 ...이 경우 결코 – mKorbel

답변

6

TableModels이 올바르게 작성 되었다면 모델의 데이터를 업데이트하면 변경 사항이 표시됩니다. DefaultTableModel을 사용하면이 작업이 처리됩니다. AbstractTableModel을 기반으로하는 모델을 사용하는 경우 모델을 변경 한 후 적절한 fireTableXXX(...) 메서드를 호출해야합니다. AbstractTableModel APIJTable tutorial처럼 이러한 방법에 대해 자세히 보여줍니다.

+2

나를 이길, +1 – Jeffrey

3

이전 모델 제안 업데이트 외에도 테이블을 수정 한 다음 한 번에 수천 개의 행을 추가/삭제하면 테이블을 업데이트 한 후 fireTableDataChanged()를 호출하여 추가 페인팅을 절약 할 수 있습니다. 대량.

+0

ehhh ... 아니요 : 일괄 적 으로든 아니든, 수정이 닫힌 블록 일수록 더 구체적입니다. 화재 방법이 더 좋습니다 (테이블이 fi 선택과 같은 상태를 유지하도록 허용) – kleopatra