Duvidas com JTable

ola pessoal

eu sei q vcs vão mandar procurar no site, mas oq eu preciso é justamente uma seleção de coisas q axei aki no GUJ.

entaum vamus ao problema.

eu tenho uma JTable e preciso de 3 coisas nela

  • centralizar o conteudo na célula
  • redimensionar a largura da coluna de acordo com o conteúdo
  • colorir a ultima célula de acordo com uma cor

eu tenho o código de centralizar assim:
public void alinhaTableCentro() {

    DefaultTableCellRenderer cellRenderer = new DefaultTableCellRenderer();
    cellRenderer.setHorizontalAlignment(SwingConstants.CENTER);
    
    for(int numCol = 0; numCol < table.getColumnCount(); numCol++) {
        table.getColumnModel().getColumn(numCol).setCellRenderer(cellRenderer);         
    }        
}

de redimensionar assim:
public void arranjaColuna(int coluna, int margin) {

    TableModel model = table.getModel();
    DefaultTableColumnModel colModel = (DefaultTableColumnModel) table.getColumnModel();
    TableColumn col = colModel.getColumn(coluna);
    int width = 0;
    
    // Obtem a largura do cabecalho
    TableCellRenderer renderer = col.getHeaderRenderer();
          
    if(renderer == null) {
        renderer =  table.getTableHeader().getDefaultRenderer();
    }
    
    Component comp = renderer.getTableCellRendererComponent(table, col.getHeaderValue(), false, false, 0, 0);
    width = comp.getPreferredSize().width;
                   
    for(int r=0; r<table.getRowCount(); r++) {
        renderer = (ColorCellRenderer) table.getCellRenderer(r, coluna);
        comp = renderer.getTableCellRendererComponent(table, table.getValueAt(r, coluna), false, false, r, coluna);   
        width = Math.max(width, comp.getPreferredSize().width);
    }
    
    width += 2*margin;
    col.setPreferredWidth(width);                
}        

de colorir eu tenho uma classe chamada ColorCellRenderer q extende DefaultTableCellRenderer no qual sobreponho o método getTableCellRendererComponent e acrescento o método colorir célula. A classe ficou deste modo:

public class ColorCellRenderer extends DefaultTableCellRenderer {

private Map cores = new HashMap();
private Point tempCel = new Point(0, 0);
private Color defaultBackground;

/** Creates a new instance of ColorCellRenderer */
public ColorCellRenderer() {
    this.defaultBackground = getBackground();
}

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    
    Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    
    this.tempCel.x = row;
    this.tempCel.y = column;
    
    if(this.cores.containsKey(this.tempCel)) {
        comp.setBackground((Color) this.cores.get(this.tempCel));            
        
    } else {
        comp.setBackground((Color) this.defaultBackground);
    }
    
    return comp;                        
}

public void colorirCelula(int row, int column, Color cor) {
    this.cores.put(new Point(row, column), cor);
}

}

agora eu queria integrar tudo isso e estou tendo problema. quando mando centralizar e redimensionar o código funciona…c mandar fazer isso e colorir ele naum pinta…somente faz os 2 primeiros

Alguém poderia ajudar ??

Ricardo