/* ColoredTableCellRenderer.java */

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.*;

public class ColoredTableCellRenderer
implements TableCellRenderer
{
  private Color lightBlue = new Color(160, 160, 255);
  private Color darkBlue  = new Color( 64,  64, 128);

  public Component getTableCellRendererComponent(
    JTable table,
    Object value,
    boolean isSelected,
    boolean hasFocus,
    int row,
    int column
  )
  {
    //Label erzeugen
    JLabel label = new JLabel((String)value);
    label.setOpaque(true);
    Border b = BorderFactory.createEmptyBorder(1, 1, 1, 1);
    label.setBorder(b);
    label.setFont(table.getFont());
    label.setForeground(table.getForeground());
    label.setBackground(table.getBackground());
    if (hasFocus) { 
      label.setBackground(darkBlue);
      label.setForeground(Color.white);
    } else if (isSelected) {
      label.setBackground(lightBlue);
    } else {
      //Angezeigte Spalte in Modellspalte umwandeln
      column = table.convertColumnIndexToModel(column); 
      if (column == 1) {
        int numpages = Integer.parseInt((String)value);
        if (numpages >= 250) {
          label.setBackground(Color.red);
        } else if (numpages >= 200) {
          label.setBackground(Color.orange);
        } else {
          label.setBackground(Color.yellow);
        }
      }
    }
    return label;
  }
}