tabela.getColumnModel().getColumn(1).setPreferredWidth(40);
public class ClienteTableModel extends AbstractTableModel {
private ArrayList<Clientes> linhas;
private String[] colunas = new String[] { "CODIGO", "NOME", "RG", "CPF", "TELEFONE", "AVALIACAO" };
public ClienteTableModel() {
linhas = new ArrayList<Clientes>();
}
public ClienteTableModel(ArrayList<Clientes> lista) {
linhas = new ArrayList<Clientes>(lista);
}
/* Retorna a quantidade de colunas. */
@Override
public int getColumnCount() {
// Está retornando o tamanho do array "colunas".
return colunas.length;
}
/* Retorna o nome da coluna no índice especificado.
* Este método é usado pela JTable para saber o texto do cabeçalho. */
@Override
public String getColumnName(int columnIndex) {
// Retorna o conteúdo do Array que possui o nome das colunas
// no índice especificado.
return colunas[columnIndex];
}
/* Retorna a classe dos elementos da coluna especificada.
* Este método é usado pela JTable na hora de definir o editor da célula. */
@Override
public Class<?> getColumnClass(int columnIndex) {
return String.class;
}
/* Retorna a quantidade de linhas. */
@Override
public int getRowCount() {
// Retorna o tamanho da lista de Clientes.
return linhas.size();
}
/* Retorna o valor da celula especificada pelos indices da
* linha e da coluna.*/
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Clientes cliente = linhas.get(rowIndex);
// Retorna o campo referente a coluna especificada.
// Aqui é feito um switch para verificar qual é a coluna
// e retornar o campo adequado. As colunas são as mesmas
// que foram especificadas no array "colunas".
switch (columnIndex) {
case 0: // Primeira coluna é o codigo.
return cliente.getCodigo();
case 1: // Segunda coluna é o nome.
return cliente.getNome();
case 2: // Terceira coluna é o RG.
return cliente.getRG();
case 3: // Querta coluna é o CPF.
return cliente.getCPF();
case 4: // Quinta coluna é o telefone.
return cliente.getTelefone();
case 5: // Sexta coluna é a avaliacao.
return cliente.getAvaliacao();
default:
// Se o índice da coluna não for válido, lança um
// IndexOutOfBoundsException (Exceção de índice fora dos limites).
// Não foi necessário verificar se o índice da linha é inválido,
// pois o próprio ArrayList lança a exceção caso seja inválido.
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex){
//pega o produto da linha
Clientes cliente = linhas.get(rowIndex);
//verifica qual valor vai ser alterado
switch (columnIndex) {
case 0: // Primeira coluna é o codigo.
cliente.setCodigo(Long.parseLong(aValue.toString()));
case 1: // Segunda coluna é o nome.
cliente.setNome(aValue.toString());
case 2: // Terceira coluna é o RG.
cliente.setRG(aValue.toString());
case 3: // Querta coluna é o CPF.
cliente.setCPF(Long.parseLong(aValue.toString()));
case 4: // Quinta coluna é o telefone.
cliente.setTelefone(Long.parseLong(aValue.toString()));
case 5: // Sexta coluna é a avaliacao.
cliente.setAvaliacao(aValue.toString().charAt(0));
}
//avisa que os dados mudaram
fireTableDataChanged();
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
//no nosso caso todas vão ser editáveis, entao retorna true pra todas
return true;
}
public void setLinhas(ArrayList<Clientes> linhas) {
this.linhas = linhas;
}
}