[Resolvido]JTable não coloriu celula com formatação

Boa noite amigos tenho uma JTable img abaixo

qual classe deve chavar aqui amigos para poder colorir as celulas formatadas ? obrigado amigos

        table.setDefaultRenderer(Integer.class, renderer);
        table.setDefaultRenderer(Double.class, renderer);
        table.setDefaultRenderer(Object.class, renderer);
        table.setDefaultRenderer(Date.class, renderer);

Depende, o que você retorna no getColumnClass do seu TableModel?

Retorna java.lang.Double ViniGodoy

Tem certeza? Posta seu model.

Model Patrimonio


import java.io.Serializable;


public class Patrimonio implements Serializable{

	
	private static final long serialVersionUID = 1L;
	
	private int id;
	private String descricao;
	private double valor;
	private double vlr_despesas;
	private double vlr_lucro;
	private String tipo_despesas;
	private String tipo_lucro;
	private String situacao;
	private String dt_cadastro;
	
	public Patrimonio(){
		super();
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public double getValor() {
		return valor;
	}

	public void setValor(double valor) {
		this.valor = valor;
	}

	

	public double getVlr_despesas() {
		return vlr_despesas;
	}

	public void setVlr_despesas(double vlr_despesas) {
		this.vlr_despesas = vlr_despesas;
	}

	public double getVlr_lucro() {
		return vlr_lucro;
	}

	public void setVlr_lucro(double vlr_lucro) {
		this.vlr_lucro = vlr_lucro;
	}

	public String getTipo_despesas() {
		return tipo_despesas;
	}

	public void setTipo_despesas(String tipo_despesas) {
		this.tipo_despesas = tipo_despesas;
	}

	public String getTipo_lucro() {
		return tipo_lucro;
	}

	public void setTipo_lucro(String tipo_lucro) {
		this.tipo_lucro = tipo_lucro;
	}

	public String getSituacao() {
		return situacao;
	}

	public void setSituacao(String situacao) {
		this.situacao = situacao;
	}

	public String getDt_cadastro() {
		return dt_cadastro;
	}

	public void setDt_cadastro(String dt_cadastro) {
		this.dt_cadastro = dt_cadastro;
	}
	
	

}

uso essas classes para formatar as celulas

[code]

import java.awt.Component;
import java.text.NumberFormat;
import java.util.Locale;

import javax.swing.AbstractCellEditor;
import javax.swing.JFormattedTextField;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;

public class MoedaCellEditor extends AbstractCellEditor implements TableCellEditor {

/** 
 * classe para editar a celula com formato de moeda 
 */  
private static final long serialVersionUID = 1L;  
private JFormattedTextField moeda = null;  
private NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("pt","BR"));  
  
private JFormattedTextField getCell() {  
    if (moeda == null)  
        moeda = new JFormattedTextField(formatter);  
    return moeda;  
}  

public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {  
    getCell().setValue(value);  
    return getCell();  
}  

public Object getCellEditorValue() {  
    return getCell().getValue();  
}  

} [/code]


import java.awt.Component;
import java.text.NumberFormat;
import java.util.Locale;

import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.TableCellRenderer;

public class MoedaCellRender extends JLabel implements TableCellRenderer {  
	  
    /** 
     * classe para mostrar a celula com formato de moeda 
     */  
    private static final long serialVersionUID = 1L;  
    private JLabel cell = null;  
    private NumberFormat formatter = NumberFormat.getCurrencyInstance( new Locale("pt","BR") ); // Locale.getDefault()  
      
    private JLabel getCell() {  
        if (cell == null)  
            cell = new JLabel();  
        return cell;  
    }  
  
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {  
        if (value != null) {  
            getCell().setText( formatter.format(value) );  
            getCell().setHorizontalAlignment(SwingConstants.RIGHT);  
        } else getCell().setText("");  
        return getCell();  
    }  
}  

aqui formato a célula

[code]

	table.setModel(tableModel);
	table.getColumnModel().getColumn(2).setCellEditor(new MoedaCellEditor());  
	table.getColumnModel().getColumn(2).setCellRenderer(new MoedaCellRender()); [/code]

E onde você muda as cores das linhas no moedaCellRender?

Se você quer sempre deixar a JTable zebrada, dá uma olhada no padrão Decorator.

Segue a resposta, amigo ViniGodoy segui suas orientações em um poste meu anterior, vlw…

[code]
import java.awt.Color;
import java.awt.Component;
import java.text.NumberFormat;
import java.util.Locale;

import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;

public class MoedaCellRender extends JLabel implements TableCellRenderer {
private Color whiteColor = new Color(254, 254, 254);
private Color alternateColor = new Color(237, 243, 253);
private Color selectedColor = new Color(61, 128, 223);

/**
 * classe para mostrar a celula com formato de moeda
 */
private static final long serialVersionUID = 1L;
private JLabel cell = null;
private NumberFormat formatter = NumberFormat
		.getCurrencyInstance(new Locale("pt", "BR")); // Locale.getDefault()

private JLabel getCell() {
	if (cell == null)
		cell = new JLabel();

	return cell;
}

public Component getTableCellRendererComponent(JTable table, Object value,
		boolean selected, boolean hasFocus, int row, int column) {
	Color bg;
	if (value != null) {
		bg = selectedColor;
		getCell().setText(formatter.format(value));
		getCell().setHorizontalAlignment(SwingConstants.RIGHT);
		getCell().setOpaque(true);
		getCell().setBackground(bg);
		getCell().setForeground(selected ? Color.white : Color.black);
		getCell().setVisible(true);

		if (hasFocus) {
			bg = selectedColor;
			setBackground(bg);
			setForeground(selected ? Color.white : Color.black);
		} else if (!selected)
			bg = (row % 2 == 0 ? alternateColor : whiteColor);
		else
			bg = selectedColor;

		getCell().setBackground(bg);
		getCell().setForeground(selected ? Color.white : Color.black);
	} else
		getCell().setText("");
	return getCell();
}

}[/code]