Boa tarde, montei minha jTable Abstrata que está funcionando normal todo o preenchimento.
Porém estou com problemas na edição de uma coluna do tipo Date, eu preencho ela de forma automática mas gostaria de permitir a edição dela caso o usuário queira…
E é aí que está o problema, pois a coluna esta setada como isCellEditable e mesmo assim não consigo editar a nenhuma informação desta coluna.
Fiz um teste colocando todas as colunas como Editable e rodei para testar…todas funcionam a edição, menos a esta celula que quero.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package renatoportfolio.com.tabelas;
import java.math.BigDecimal;
import java.sql.Date;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import javax.swing.table.AbstractTableModel;
import renatoportfolio.com.dto.CreditoDto;
/**
*
* @author DESENVOLVIMENTO
*/
public class TabelaCredito extends AbstractTableModel {
private ArrayList<CreditoDto> linhas;
private String[] colunas = {"NR", "COD.CLI", "PARC", "VALOR", "JUROS %", "VENCIMENTO", "DT.OP", "STATUS"};
public TabelaCredito(List<CreditoDto> pacote_de_dados, String[] nome_das_colunas) {
this.linhas = new ArrayList(pacote_de_dados);
setColunas(nome_das_colunas);
}
public TabelaCredito() {
this.linhas = new ArrayList<>();
}
@Override
public int getRowCount() {
int tamanho = linhas.size();
return tamanho;
}
@Override
public int getColumnCount() {
int tamanho = colunas.length;
return tamanho;
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
//case 0:
// return Integer.class;//id
case 0:
return Integer.class;//nr
case 1:
return Integer.class;//cod.cli
case 2:
return Integer.class;//parc
case 3:
return BigDecimal.class;//valor
case 4:
return Integer.class;//juros
case 5:
return Date.class;//vencimento
case 6:
return Date.class;//dt.op
case 7:
return Integer.class;//status
default:
}
return null;
}
@Override
public Object getValueAt(int linha, int coluna) {
Object value = null;
Locale meuLocal = new Locale("pt", "BR");
DecimalFormat df = (DecimalFormat) NumberFormat.getCurrencyInstance(meuLocal);
SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); //Cria o formato pardão da data.
final CreditoDto dto = (CreditoDto) linhas.get(linha);
switch (coluna) {
//case 0:
// value = dto.getIdcred();
//break;
case 0:
value = String.format("%06d", dto.getNr());
break;
case 1:
value = dto.getCodcli();
break;
case 2:
value = dto.getParc();
break;
case 3:
value = df.format(dto.getValor());
break;
case 4:
value = dto.getJuros();
break;
case 5:
value = formatador.format(dto.getVencimento());
break;
case 6:
value = formatador.format(dto.getDtoperacao());
break;
case 7:
value = dto.getStatus();
break;
}
return value;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
//metodo identifica qual coluna é editavel
if(columnIndex == 0){//nr
return false;
}
if(columnIndex == 1){//codcli
return false;
}
if(columnIndex == 2){//parcela
return false;
}
if(columnIndex == 3){//valor
return false;
}
if(columnIndex == 4){//juros
return false;
}
if(columnIndex == 5){//vencimento
return true;
}
if(columnIndex == 6){//operacao
return false;
}
if(columnIndex == 7){//status
return false;
}
return true;
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
CreditoDto dto = (CreditoDto) linhas.get(rowIndex);
switch (columnIndex) {
//case 0:
// dto.setIdcred((int) aValue);
//break;
case 0:
dto.setNr((int) aValue);
break;
case 1:
dto.setCodcli((int) aValue);
break;
case 2:
dto.setParc((int) aValue);
break;
case 3:
dto.setValor((BigDecimal) aValue);
break;
case 4:
dto.setJuros((int) aValue);
break;
case 5:
dto.setVencimento((Date) aValue);
break;
case 6:
dto.setDtoperacao((Date) aValue);
break;
case 7:
dto.setStatus((int) (aValue));
break;
default:
// Não deve ocorrer, pois só existem 3 colunas
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
fireTableCellUpdated(rowIndex, columnIndex);
}
@Override
public String getColumnName(int num) {
String nome = colunas[num];
return nome;
}
public List getLinhas() {
return linhas;
}
public final void setLinhas(List linhas) {
this.linhas = (ArrayList<CreditoDto>) linhas;
}
public String[] getColunas() {
return colunas;
}
public final void setColunas(String[] colunas) {
this.colunas = colunas;
}
public void adcCred(CreditoDto dto) {
this.linhas.add(dto);
fireTableDataChanged();
}
}