Problem with TableCellRenderer

Hello Experts,

I have created a class CustomTableCellRenderer which extends DefaultTableCellRenderer for coloring of some rows in Table. this class looks like

package gui;

import java.awt.Color;

import java.awt.Component;

import javax.swing.JTable;

import javax.swing.table.DefaultTableCellRenderer;

publicclass CustomTableCellRendererextends DefaultTableCellRenderer{

public Component getTableCellRendererComponent(JTable table, Object value,

boolean isSelected,boolean hasFocus,int row,int column){

Component cell = super.getTableCellRendererComponent(table, value,

isSelected, hasFocus, row, column);

if(table.getSelectedRow() == row){

cell.setBackground(new Color(0xFF, 0xFF, 0x75));

}elseif(table.getRowCount() - 1 == row){

cell.setBackground(new Color(0, 0xA0, 0xFF));

}else{

cell.setBackground(Color.white);

}

return cell;

}

}

And in my main program I have created a table. and I set the DefaultCellRenderer to the above class

TableCellRenderer renderer =new CustomTableCellRenderer();

try{

table.setDefaultRenderer(Class.forName("java.lang.String"),

renderer);

}catch(ClassNotFoundException ex){

System.exit(0);

}

Since the defaultcellrenderer is set to CustomCellRenderer, the getTableCellRendererComponent of CustomCellRenderer should be called right? But it is not happening. When I debugged, the getTableCellRendererComponent of DefaultCellRenderer is getting called. The flow is not entering CustomCellRenderer. Any reasons why?

And where i should change in my code to make it work as I desire?

Thanks for your response in advance.

Regards

Irfaan

[2938 byte] By [Irfan_dcrtia] at [2007-11-27 11:33:12]
# 1

I think it depends on you column model. Check whether the getColumnClass() returns String class.

Or use

table.setDefaultRenderer(Object.class, renderer);

Or set the renderer directly to column

table.getColumnModel().getColumn(index).setCellRenderer(renderer);

Regards,

Stas

StanislavLa at 2007-7-29 16:49:56 > top of Java-index,Desktop,Core GUI APIs...
# 2

Hi

Yes, you were right. table.setDefaultRenderer(Object.class, renderer) worked.

Thanks Buddy...

Irfaan

Irfan_dcrtia at 2007-7-29 16:49:56 > top of Java-index,Desktop,Core GUI APIs...