Ajuda com cor na JTable.... não está mudando a cor da linha<<<<<

Boa Tarde Pessoal…

Meu problema é que eu não consigo alterar a cor de background da linha se na celular tiver
um valor do tipo Date, ou do tipo int…

o metodo getTableCellRendererComponent não faz a mudança…

alguem sabe o por quê??

meu código é este:

[code]public class LinhasIntercaladasJtable extends DefaultTableCellRenderer implements TableCellRenderer {

		private Color primeiraLinha;
		private Color segundaLinha;
		public LinhasIntercaladasJtable(Color primeiraLinha, Color segundaLinha){
			this.primeiraLinha=primeiraLinha;
			this.segundaLinha=segundaLinha;
		}
   
   public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();  
   
   public Component getTableCellRendererComponent(JTable table, Object value,  
       boolean isSelected, boolean hasFocus, int row, int column) {  
     Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(  
         table, value, isSelected, hasFocus, row, column);  
      
     Color background;
     if (isSelected) {  
    	 background = new Color(49,106,197);  
     } else {  
       if (row % 2 == 0) {  
         background = primeiraLinha;//Color.white;  
       } else {
         background = segundaLinha;//new Color(230,230,230);  
       }
     }
     
     renderer.setBackground(background);
     return renderer;  
   }  
 } [/code]

Na hora de setar para minha jTable utilizo esse código:

tbPesquisa.setDefaultRenderer(Object.class, new LinhasIntercaladasJtable( new Color(255, 255, 255), new Color(245, 245, 245)));
Lembrando… que possuo algumas colunas que tem valores do tipo int, date
e nessas linhas a cor não muda…
Me ajudem… :cry:

Abraço…

Ninguem tem alguma sujestãão???

Olha esse exemplo!
ignora o botao de adicionar linha!!!

package teste;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;

public class te extends JFrame {
	JTable tabela = new JTable();

	public te() {
		String[][] dados = new String[][] { { "SP", "Sao Paulo" }, { "RJ", "Rio de Janeiro" }, { "RN", "Rio Grande do Norte" }, { "PR", "Parana" }, { "SP", "Sao Paulo" }, { "RJ", "Rio de Janeiro" }, { "RN", "Rio Grande do Norte" },
				{ "PR", "Parana" } };
		String[] colunas = new String[] { "Estado", "Cidade" };
		// Ao inves de passar direto, colocamos os dados em um modelo
		DefaultTableModel modelo = new DefaultTableModel(dados, colunas);
		// e passamos o modelo para criar a jtable
		tabela.setModel(modelo);
		TableCellRenderer render = new EvenOddRenderer();
		tabela.setDefaultRenderer(Object.class, render);
		JScrollPane scrollPane = new JScrollPane(tabela);

		this.getContentPane().add(scrollPane, BorderLayout.CENTER);

		JButton bt = new JButton("Adiciona linha");
		bt.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				adiciona();

			}

		});

		this.getContentPane().add(bt, BorderLayout.SOUTH);
		this.setSize(300, 150);
		this.setVisible(true);

	}

	private void adiciona() {
		javax.swing.table.DefaultTableModel model = (DefaultTableModel) this.tabela.getModel();
		model.insertRow(0, new Object[] { "aaaa", "aaaa" });

	}

	public void removelinha() {
		DefaultTableModel modelo = (DefaultTableModel) tabela.getModel();

		// Remove a linha
		modelo.removeRow(tabela.getSelectedRow());

	}

	public static void main(String args[]) {
		new te();
	}
}

class EvenOddRenderer implements TableCellRenderer {

	public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();

	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

		Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

		((JLabel) renderer).setOpaque(true);
		Color foreground, background;
		if (isSelected) {
			foreground = Color.yellow;
			background = Color.green;
		} else {
			if (row % 2 == 0) {
				foreground = Color.blue;
				background = Color.white;
			} else {
				foreground = Color.white;
				background = Color.blue;
			}
		}
		renderer.setForeground(foreground);
		renderer.setBackground(background);
		return renderer;
	}
}

Pq vc falou que aquele é o renderer de Object.class, não de Date.class e nem de Integer.class.
Para esses tipos, o JTable tem outro renderer.

Amigo tenta assim:


  suaTabela.setDefaultCellRenderer(new DefaultTableCellRenderer() {
            Color corLinha;
            @Override
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                    boolean hasFocus, int row, int column) {
                if (value == null) {
                    return this;
                }
                super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
                Receber receber = (Receber) tbGrid.getValues().get(tbGrid.getActualRowAt(row));
                if (isSelected) {
                    corLinha = UIManager.getColor("Table.selectionForeground");
                } else if (receber.isTroca()) {
                    corLinha = Color.RED;
                } else {
                    corLinha = UIManager.getColor("Table.foreground");
                }
                setForeground(corLinha);
                return this;
            }
        });
    }