2017-12-13 4 views
0

JTable과 DefaultTableModel을 가지고 있는데, 매 3 초마다 JTable의 모든 행을 삭제하고 JTable에 새 행을 추가하려고합니다. 성능을 고려해 볼 때, Jtable을 다시 만들거나 모든 행을 제거하고 행을 추가하는 것이 최선의 선택입니까?Jtable을 다시 만들거나 모든 행을 제거하고 새 행을 추가 하시겠습니까?

+0

* "renew Jtable .."* 그게 무슨 뜻입니까? * ".. 또는 모든 행과 addrows 제거"* 그게 내가 추구하고자하는 접근법입니다. –

답변

0

Jtable을 갱신하거나 모든 행과 addrow를 제거하는 가장 좋은 방법은 무엇입니까?

JTable을 다시 만들면 모든 렌더러와 편집기가 테이블에 대해 다시 생성됩니다.

TableModel을 변경하면 TableColumnModel 및 새 TableModel을 기반으로하는 모든 TableColumns를 다시 만들어야합니다.

JTable/TableModel 관계를 지원하기 위해 만들어야 할 개체가 더 많이 있습니다.

행을 제거하고 행을 추가하면 현재의 모든 렌더러를 사용하여 테이블이 새 데이터를 다시 칠하기 만합니다. 나는 이것이 더 효율적이라고 말한다. 한 번에 하나의 행을 추가하는 대신 한 번에 모든 행을 추가해야합니다.

+0

한 번에 모든 행을 추가하려면 어떻게합니까? – Jaycee

+0

DefaultTableMode를 사용하면 데이터 행을 보유하는 "dataVector"변수에 액세스 할 수 있습니다. 따라서 DefaultTableModel을 확장하여 다음과 같은 사용자 정의 메서드를 만듭니다. 1) 모든 행을 제거합니다. 2) 모든 데이터 행을 dataVector에 추가합니다. 3) fireTableDataChanged (...) 메서드를 호출합니다. – camickr

0

데이터 개체를 파고 드는 테이블 모델을 만들 수 있습니다. 기본 데이터 객체를 변경하는 즉시 fireTableDataChanged()를 호출합니다. AbstractTableModel가 # fireTableDataChanged()에 대한의 JavaDoc에서

:

는 테이블의 행의 모든 ​​셀의 값이 변경되었을 수 있습니다 모든 청취자에게 통지합니다. 행 수가 변경되었을 가능성이있어, JTable는 테이블을 처음부터 다시 그려야합니다. 표의 구조 (열 순서대로)는 동일하다고 가정합니다.

관련 문제