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

    ResultSetTableModel       model;
    Component                 result;
    boolean                   found;

    result = super.getTableCellRendererComponent(
        table, value, isSelected, hasFocus, row, column);

    if (table.getModel() instanceof ResultSetTableModel) {
      model = (ResultSetTableModel) table.getModel();
      // normal cell
      if (row >= 0) {
        if (model.isNullAt(row, column)) {
          setToolTipText("NULL");
          if (isSelected)
            result.setBackground(missingColorSelected);
          else
            result.setBackground(missingColor);
        }
        else {
          setToolTipText(null);
          if (isSelected)
            result.setBackground(table.getSelectionBackground());
          else
            result.setBackground(Color.WHITE);
        }

        // alignment
        if (model.isNumericAt(column))
          setHorizontalAlignment(SwingConstants.RIGHT);
        else
          setHorizontalAlignment(SwingConstants.LEFT);
      }
      // header
      else {
        setBorder(UIManager.getBorder("TableHeader.cellBorder"));
        setHorizontalAlignment(SwingConstants.CENTER);
        if (table.getColumnModel().getSelectionModel().isSelectedIndex(column))
          result.setBackground(UIManager.getColor("TableHeader.background").darker());
        else
          result.setBackground(UIManager.getColor("TableHeader.background"));
      }
    }

    return result;
  }