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]