This applet shows how to change color in selected
row. Through overriding the prepareRenderer() method
in JTable, it should be easy to change any cell's color. Before
displaying the cell, the table calls this method for every cell.
The override should call the superclass and retrieve the prepared
component. It can then modify the background and foreground colors
to achieve any desired pattern of shaded rows and columns.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import javax.swing.table.*;
public class shadedJtable extends JApplet
{
public static void main(String[] args)
{
shadedJtable sj=new shadedJtable();
sj.init();
}
public void init()
{
// This table shades every other row yellow
Object[][] data={{"data","data1","xxx","aa"},{"test","test2","yyy","bb"},{"1","2","124","cc"}};
Object[] names={"c1","c2","c3","c4"};
mytable table=new mytable(data,names);
JScrollPane sp=new JScrollPane(table);
getContentPane().add(sp);
}
class mytable extends JTable
{
public mytable(Object[][] data,Object[] name)
{
super(data,name);
}
public Component prepareRenderer(TableCellRenderer renderer,
int rowIndex, int vColIndex) {
Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
//if selected row, mark green
if (isCellSelected(rowIndex, vColIndex)) {
c.setBackground(Color.green);
} else {
// If not shaded, match the table's background
c.setBackground(getBackground());
}
return c;
}
}
}