Alterar cor da fonte de uma célula selecionada no JTable

Pessoal,

pesquisei em tudo que é lugar, mas não achei nada que me ajudasse.

Preciso mudar a cor da célula que que clicar dentro de um JTable.

Por exemplo, se eu clicar na célula A, ela fica em vermelho, se eu clicar na célula B, ela fica em vermelho, mas a célula A també continua em vermelho

Segue abaixo a forma que estou implementando:

   public class FormatacaoDaTabela extends DefaultTableCellRenderer{
   
    @Override
     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);  
      
      if(isSelected)
          comp.setForeground(Color.red);
      return comp;  
   }  

}

e pra setar, eu to fazendo assim

 private void gradeMouseClicked(java.awt.event.MouseEvent evt) {
        Point click = new Point(evt.getX(), evt.getY());    
                
        int column = grade.columnAtPoint(click);    
        grade.getColumnModel().getColumn(column).setCellRenderer(new FormatacaoDaTabela()); // mostra a celula
    }

Só que da forma que to fazendo acima não ta funcionando. Se eu selecionar uma célula, ele não colore. Se eu selecionar uma célula acima, ele colore todo o intervalo entre as duas. Ta uma loucura total…hehehe

Se alguem puder me ajudar

Para habilitar a seleção das celulas…

Para mudar a cor de fundo das celulas selecionadas

Para selecionar mais de uma celula…
Segura CTRL

AMON-HA,

vlww, resolveu um dos meus problemas só que na minha situação, tenho que fazer o seguinte.

o usuario vai selecionar uma célula (que é o ponto de partida) e depois seleciona outra célula (que será o ponto de chegada),
eu tenho que percorrer o menor caminho entre as duas células (estou desenhando um grafo na tabela) e colorir todas as células desse caminho.

o método que postei parece que está colorindo aleatoriamente. eu consigo fazer isso? passa por exemplo um list de array contendo a linha e a coluna e colorir
essa célula?

Como você está identificando os nós e as arestas na tabela???

Para você achar o melhor caminho você pode usar uma busca heuristica…
Dê uma pesquisada na internet sobre heuristica admissivel e polinômio de lagrange…

a idéia é representar o grafo com caracter especial. ║ ╚ ╩ ╣ por exemplo, mas não consegui imprimir esses caracteres ainda, parece q a tabela ascii que ta pegando não contém, esse problema ainda não resolvi, mas o código de busca ja ta mais tranquilo, eu preciso saber mesmo é como que vou colorir as arestas na tabela.

Não sei se tem como implementar isso por código não…
O problema seria em selecionar uma diagonal… tipo… digamos que você quer selecionar a primeira celula array(0,0)

[code]jTable.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

jTable.setRowSelectionAllowed(true);
jTable.setColumnSelectionAllowed(true);
jTable.setRowSelectionInterval(0, 0);
jTable.setColumnSelectionInterval(0, 0);[/code]
Depois, você quer selecionar a diagonal dela, array(1,1)

[code]jTable.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

jTable.setRowSelectionAllowed(true);
jTable.setColumnSelectionAllowed(true);
jTable.setRowSelectionInterval(0, 1);
jTable.setColumnSelectionInterval(0, 1);[/code]
Você vai observar que será selecionado as celulas: array(0,0); array(0,1); array(1,0); array(1,1)

Teria que haver uma forma de você selecionar uma segunda celula, sem perder a seleção da outra… aí você faria…

[code]jTable.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

jTable.setRowSelectionAllowed(true);
jTable.setColumnSelectionAllowed(true);
jTable.setRowSelectionInterval(0, 0);
jTable.setColumnSelectionInterval(0, 0);
jTable.setRowSelectionInterval(1, 1);
jTable.setColumnSelectionInterval(1, 1);[/code]
Mas isso eu desconheço…