2010-04-12 3 views
0

데이터베이스의 테이블 데이터로 채워진 JTable (ResultSetTableModel을 사용 했음)과 TableRowSorter를 사용하여 하나의 열을 클릭하면 행을 정렬합니다. JTable. 데이터는 문제없이 jTable에 표시됩니다.열이 재정렬 될 때 데이터베이스 데이터로 채워진 JTable이 업데이트되지 않습니다.

그러나 JTable을 일부 열 테이블 (예 : 기본 키 값으로 정렬)로 정렬하고 정렬 된 jTable에서 일부 셀을 편집하면 값이 이전 위치의 이전 셀로 변경됩니다. 열의 ordenation.

예를 들어 : - 이름 내가 2 열이있는 테이블이 있다고 가정 . 나는 "1", 에디션 후, 테이블 값을 편집 할 경우이

a 3 
b 2 
c 1 

처럼되고,

c 1 
b 2 
a 3 

내가 JTable로의 이름으로 내가 주문 : 내 표는 다음과 같은 데이터가 이렇게되다

a 1 
b 2 
c 1 

위치가 JTable에서 업데이트되지 않고 원래 위치를 고려하여 값이 편집 된 것 같습니다.

답변

2

먼저 데이터가 실제로 모델에 포함되어 있고 jtable은보기에 불과하다는 점에 유의하십시오. 일반적으로 jtable의 행과 열은 기본적으로 테이블의 행과 열에 해당합니다. 당신이 정렬의 JTable의 행 사이의 매핑, COL은 동일하게 유지하지 않을 경우, 은 그래서 당신은 정렬 후 매핑을 유지해야

table.setValueAt(object,table.convertRowIndexToModel(rowVal),convertColumnIndexToModel(colVal)) 

이렇게 세포 (rowVal, colVal를) 말할 편집 할 때. 여기에서 정렬 및 필터링 섹션을 읽어보십시오. http://java.sun.com/docs/books/tutorial/uiswing/components/table.html