Pessoal, estou com um jtable e nele tem uma coluna que é data, tenho que formatar padrão Brasileiro e estou tentando através do getTableCellRendererComponent mas não está funcionando tentei usando a variável como LocalDate e como Date mas sem sucesso, podem me ajudar no que estou fazendo de errado?
nos códigos abaixo deixei com Date enfim estou aberto a sugestões.
Minha Classe Renderer
package Util;
import java.awt.Component; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer;
public class MeuRenderer extends DefaultTableCellRenderer {
SimpleDateFormat formatador = new SimpleDateFormat("dd-MM-yyyy");
@Override
public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
//efeito zebra na tabela
if (isSelected) {
this.setBackground(new java.awt.Color(70, 130, 180));
} else {
if (row % 2 == 0) {
this.setBackground(new java.awt.Color(211, 219, 255));
} else {
this.setBackground(new java.awt.Color(255, 255, 255));
}
}
//formatar data
if (obj instanceof Date) {
this.setText(formatador.format((Date) obj));
}
return this;
} }
Método carregando a Lista
public List<Membro> selectAll(Membro obj) throws SQLException {
List lista = new ArrayList();
String select = "select "
+ "p.pes_id, "
+ "p.pes_nome, "
+ "p.pes_dtinclusao, "
+ "m.mem_codigo, "
+ "m.pes_id, "
+ "m.mem_num,"
+ "m.con_id,"
+ "c.con_id,"
+ "c.con_descricao "
+ "FROM pessoa AS p "
+ "JOIN membro AS m "
+ "JOIN congregacao AS c "
+ "ON p.pes_id = m.pes_id "
+ "AND m.con_id = c.con_id "
+ "ORDER by m.mem_num";
try (PreparedStatement stmt = getConnection().prepareStatement(select);
ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
obj = new Membro();
obj.setPes_id(rs.getInt("p.pes_id"));
obj.setPes_nome(rs.getString("p.pes_nome"));
obj.setPes_dtinclusao(rs.getDate("p.pes_dtinclusao"));
obj.setMem_codigo(rs.getInt("m.mem_codigo"));
obj.setmIdPessoa(rs.getInt("m.pes_id"));
obj.setMem_numeroFicha(rs.getInt("m.mem_num"));
obj.setCon_codigo(rs.getInt("m.con_id"));
obj.setCon_descricao(rs.getString("c.con_descricao"));
lista.add(obj);
}
}
return lista;
}
Meu configura tabela
public void configuraTabela() {
view.getTabela().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
ListSelectionModel lsm = view.getTabela().getSelectionModel();
lsm.addListSelectionListener((ListSelectionEvent e) -> {
if (!e.getValueIsAdjusting()) {
selecionarLinha(view.getTabela());
}
});
javax.swing.table.TableCellRenderer renderer = new MeuRenderer();
view.getTabela().setDefaultRenderer(Object.class, renderer);
sorter = new TableRowSorter<>(modelTable);
view.getTabela().setRowSorter(sorter);
view.getTabela().setModel(modelTable);
view.getTabela().getTableHeader().setReorderingAllowed(false);
view.getTabela().getColumnModel().getColumn(0).setMinWidth(0);
view.getTabela().getColumnModel().getColumn(0).setMaxWidth(0);
view.getTabela().getColumnModel().getColumn(5).setMinWidth(0);
view.getTabela().getColumnModel().getColumn(5).setMaxWidth(0);
}
Modeltablel
package Model.Table;
import Model.Membro;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class ModelTableMembro extends AbstractTableModel {
List<Membro> lista;
private final int COLUMN_CODIGO = 0;
private final int COLUMN_NOME = 1;
private final int COLUMN_NUMFICHA = 2;
private final int COLUMN_CONGREGACAO = 3;
private final int COLUMN_DTINCLUSAO = 4;
private final int COLUMN_IDPESSOA = 5;
private Date date;
public ModelTableMembro(List<Membro> l) {
lista = new ArrayList<>(l);
}
public ModelTableMembro() {
this(new ArrayList<Membro>());
}
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
@Override
public int getRowCount() {
return lista.size();
}
@Override
public int getColumnCount() {
return 6;
}
@Override
public String getColumnName(int columIndex) {
if (columIndex == this.COLUMN_CODIGO) {
return "codigoMembro";
}
if (columIndex == this.COLUMN_NOME) {
return "Nome";
}
if (columIndex == this.COLUMN_NUMFICHA) {
return "Numero Ficha";
}
if (columIndex == this.COLUMN_CONGREGACAO) {
return "Congregação";
}
if (columIndex == this.COLUMN_DTINCLUSAO) {
return "Membro Desde:";
}
return "codigoPessoa";
}
public void addRow(Membro c) {
lista.add(c);
Collections.sort(this.lista);
this.fireTableDataChanged();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Membro c = this.lista.get(rowIndex);
if (this.COLUMN_CODIGO == columnIndex) {//0
return c.getMem_codigo();
}
if (this.COLUMN_NOME == columnIndex) {//1
return c.getPes_nome();
}
if (this.COLUMN_NUMFICHA == columnIndex) {//2
return c.getMem_numeroFicha();
}
if (this.COLUMN_CONGREGACAO == columnIndex) {//3
return c.getCon_descricao();
}
if (this.COLUMN_DTINCLUSAO == columnIndex) {//4
return c.getPes_dtinclusao();
}
return c.getPes_id();//5
}
@Override
public void setValueAt(Object obj, int linha, int coluna) {
Membro c = lista.get(linha);
switch (coluna) {
case 0:
c.setMem_codigo((int)obj);
break;
case 1:
c.setPes_nome((String)obj);
break;
case 2:
c.setMem_numeroFicha((int)obj);
break;
case 3:
c.setCon_descricao((String)obj);
break;
case 4:
c.setPes_dtinclusao((Date)obj);
break;
case 5:
c.setPes_id((int)obj);
break;
}
this.fireTableCellUpdated(linha, coluna);
}
public void removeRow(int linha) {
this.lista.remove(linha);
this.fireTableRowsDeleted(linha, linha);
}
}