그래프와 관련된 프로그램을 만들고 있으므로 인접성 테이블을 시뮬레이트하기 위해 JTable에서 열을 동적으로 작성/제거해야합니다. 원하는 경우 열을 만들 수 있지만 열을 제거한 다음 다른 열을 만들면 삭제 된 열의 이전 데이터가 최신 열에 표시되므로 제거 할 수 없습니다.JTable에서 열 제거
열 데이터가 tablemodel에서 제거되지 않았기 때문에이 내용을 읽었습니다. 나는 열을 숨기거나 표시하는 예제를 보았습니다.하지만 실제로는 그들을 제거해야합니다. 그래서 데이터의 2 차원 매트릭스를 얻었을 때 참조 나 잘못된 데이터를 교차시키지 않았습니다.
제 1 보정 :
private DefaultTableModel removeCol(int id){
DefaultTableModel tmp = new DefaultTableModel();
int columnas = modelo.getColumnCount();
for(int i=0;i<columnas;i++){
if(i!=id)
tmp.addColumn(modelo.getColumnName(i));
}
int rows = modelo.getRowCount();
String datos[] = new String[columnas-1];
for(int row=0;row<rows;row++){
for(int col=0,sel=0;col<columnas;col++,sel++){
if(col!=id)
datos[sel] = (String) modelo.getValueAt(row, col);
else
sel--;
}
tmp.addRow(datos);
}
return tmp;
}
호출 :
adjacency matrix 더 쉽게 명시 적으로 행을 조작 할 수있는AbstractTableModel
에서 조작 할 수
DefaultTableModel mo = removeCol(i);
tblTrans = new JTable(mo);
하나의 적은 컬럼을 제외하고 동일한 데이터로 새로운'TableModel'을 제공하는 한 가지 방법이 있습니다. 아마도 더 나은 방법은 열의 가시성을 구성하고 런타임에'columnCount' 및 관련 열을 조정할 수있는 사용자 정의 테이블 모델을 만드는 것입니다. –
첫 번째 옵션을 시도했지만 수정 된 TableModel (디버거를 사용하여 데이터, 열 및 모두가 올바른지 확인)을 얻은 후에 JTable에서 새 모델을 표시 할 수 없다면 이전 모델이 표시됩니다. S 내 게시물의 세부 정보) –
더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –