Olá pessoal!
Criei um TableModel que tem um construtor que recebe dois Vector. Um desses Vector é um Vector de Strings, que é justamente utilizado para nomeação das colunas. Porém, quando associo uma instância desse meu TableModel a uma JTable, ele ignora os nomes passados no Vector de Strings, colocando como título das colunas apenas “A”, “B”, “C”, “D”, …
Vou postar abaixo o código fonte. Gostaria que os colegas me apontassem onde estou errando, pois não consegui sacar onde estou bobeando…
public class BlockableTableModel extends AbstractTableModel {
private Vector linhas;
private Vector colunas;
private boolean bloqueada;
public BlockableTableModel(Vector linhas, Vector colunas) {
this.linhas = nonNulVector(linhas);
this.colunas = nonNulVector(colunas);
bloqueada = true;
fireTableStructureChanged();
}
public boolean isBloqueada() {
return bloqueada;
}
public void setBloqueada(boolean bloqueada) {
this.bloqueada = bloqueada;
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return !bloqueada;
}
public Object getValueAt(int row, int column) {
Vector rowVector = (Vector)linhas.elementAt(row);
return rowVector.elementAt(column);
}
public void setValueAt(Object value, int row, int column) {
Vector rowVector = (Vector)linhas.elementAt(row);
rowVector.setElementAt(value, column);
fireTableCellUpdated(row, column);
}
public void addRow(Vector rowData) {
insertRow(getRowCount(), rowData);
}
public void addRow(Object[] rowData) {
addRow(convertToVector(rowData));
}
public void insertRow(int row, Vector rowData) {
linhas.insertElementAt(rowData, row);
fireTableRowsInserted(row, row);
}
public void removeRow(int row) {
linhas.removeElementAt(row);
fireTableRowsDeleted(row, row);
}
public int getColumnCount() {
return colunas.size();
}
public int getRowCount() {
return linhas.size();
}
private Vector nonNulVector(Vector dataVector) {
return (dataVector != null) ? dataVector : new Vector(3);
}
protected static Vector convertToVector(Object[] anArray) {
if (anArray == null) {
return null;
}
Vector v = new Vector(anArray.length);
for (int i=0; i < anArray.length; i++) {
v.addElement(anArray[i]);
}
return v;
}
}
Obrigado, galera!