Allora, ho questo problema:
Devo costruire una jtable in cui vado a inserire dei valori....clicco un bottone e i valori inseriti devono essere ordinati in maniera crescente e ad ogni passo devo colorare in maniera differente le celle ordinate da quelle non ordinate.
Ho fatto quasi tutto, ma non capisco perchè non riesco a gestire la parte relativa ai colori....chi mi da una mano?

codice:
import java.applet.Applet;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.Timer;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import javax.swing.filechooser.FileFilter;

import javax.swing.table.*;
import javax.swing.JPanel.*;



public class Ordinamento extends JFrame 
{


JPanel pannelloOrdinamento = new JPanel();
private JTable miaTab = new JTable();
private JPanel mioPane = new JPanel();
private JPanel mioPaneB = new JPanel();
JButton ordinaB;
JTextField testoCustom = new JTextField();
int[] mioarray = new int[50];
int numRighe = 5;
int numColonne = 10;
int contaPassi = 0;
  int rigaC;
  int colonnaC;
  
RenderRedGreen mioRender = new RenderRedGreen()  ;

final class RenderRedGreen extends DefaultTableCellRenderer 
{

  
  RenderRedGreen () {

    setHorizontalAlignment(SwingConstants.RIGHT);  
  }
  
  public Component getTableCellRendererComponent(JTable aTable, 
                                          Object aNumberValue, 
                                          boolean aIsSelected, 
                                          boolean aHasFocus, 
                                          int aRow, int aColumn) {  

    
    Component renderer = super.getTableCellRendererComponent(aTable, 
                                                       aNumberValue, 
                                                       aIsSelected, 
                                                       aHasFocus, 
                                                       aRow, aColumn);
   	  if (aRow == rigaC && aColumn == colonnaC )
          {
           renderer.setBackground(Color.red);
           }


     
    
    return renderer;
  }
  

}







/**************************************
 *inizio alogoritmo di selezione
 *************************************/
public class SelectionSorter
{





public SelectionSorter(int[] anArray)
{
   int[] a = anArray;	
}

public void ordina()
{
	contaPassi = 0;
	for (int i=0; i < mioarray.length - 1; i++)
	{
		contaPassi ++;
		int minPos = minimumPosition(i);
		swap(minPos, i, contaPassi);
        
    
  
		
	}
	JOptionPane.showMessageDialog(null, "Ordinamento per selezione effettuato!");
	
}

private int minimumPosition(int from)
{
	int minPos = from;
	for (int i = from + 1; i < mioarray.length; i++)
	{
		if (mioarray[i] < mioarray[minPos])
		{
			minPos = i;
		}
		
	}
	

		  
         
		 
	return minPos;	
	
}


private void swap(int i, int j, int conta)
{
	int temp = mioarray[i];
	mioarray[i] = mioarray[j];
	mioarray[j] = temp;
	
		  
	int rigaArray1 = i/numColonne;
	int colonnaArray1 = i - (rigaArray1*numColonne);

    int rigaArray2 = j/numColonne;
	int colonnaArray2 = j - (rigaArray2*numColonne);

	int rigaConta = conta/numColonne;
	int colonnaConta = conta - (rigaConta*numColonne);
    
	miaTab.setValueAt(mioarray[i],rigaArray1,colonnaArray1);
	miaTab.setValueAt(mioarray[j],rigaArray2,colonnaArray2);
	
	rigaC = rigaConta;
	colonnaC = colonnaConta;
	miaTab.setDefaultRenderer(Object.class, mioRender );
	miaTab.revalidate();

    JOptionPane.showMessageDialog(null, "Algoritmo di Ordinamento - Passo n. "+contaPassi);
    
    
    

}


}
public class  Modello extends DefaultTableModel
	{
    	public Modello(String nomiColonne[], int numRighe){
    	    super(nomiColonne, numRighe);
    	    
    	}
	  
      	public boolean isCellEditable(int row, int column){
       	
        	return true;
      	}
	}

public Ordinamento() 
    {
    	
      super("Ordinamento");
      setSize(800, 400);
      Object[] rig = new Object[5];
      miaTab.setGridColor(Color.black);
      miaTab.setIntercellSpacing(new Dimension(0, 0));
      Modello mioModel = new Modello(new String[10], 4);
	  miaTab.setModel(mioModel);
	  miaTab.setCellSelectionEnabled(true);
	  miaTab.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
	  
	  miaTab.repaint();
	  mioPane.setLayout(new FlowLayout());
	  mioPane.add(miaTab);
	  mioPaneB.setLayout(new GridLayout(10, 0));
	  mioModel.addRow(rig);
      ordinaB = new JButton("Inizia Ordinamento");
      mioPaneB.add(ordinaB);
      pannelloOrdinamento.setLayout(new BorderLayout());
      ActionListener ordinaBListener = new ordinaBtnListener();
  	  ordinaB.addActionListener(ordinaBListener);
  	  
  	 
  	  
      
     
		getContentPane().add(BorderLayout.NORTH, mioPane);
		getContentPane().add(BorderLayout.CENTER, mioPaneB);
		getContentPane().add(BorderLayout.SOUTH, testoCustom);
		
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		System.out.println("Aperto il Programma");      
	}






	class ordinaBtnListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			try 
			{
			  
			  for (int v=0 ; v < mioarray.length; v++)
			  {
			     mioarray[v] = 0;
			  }		      
			  int indice = 0;
			  for (int r = 1; r<= 5; r++ )
			  {
			  	for (int c = 1; c <= 10; c ++)
			  	{

                    if (miaTab.getValueAt(r-1,c-1)== null || miaTab.getValueAt(r-1,c-1).toString().equals("") )
                    {
                    mioarray[indice] = 0;	
                    }
                    else
                    {
                    mioarray[indice] = Integer.parseInt(miaTab.getValueAt(r-1,c-1).toString());
                    }
			  		

			  		indice ++;
			  		
			  	}
			  	 
			  }
			  

			  SelectionSorter sorter = new SelectionSorter(mioarray);
			  sorter.ordina();
			  

			  
			  for (int v=0 ; v < mioarray.length; v++)
			  {
			     System.out.println(mioarray[v]);
			  }
			  
				
			} catch (Exception ex) {
				System.out.println("eccezione2 " + ex);
			}
		}
	}



public static void main(String argv[]) 
   {
		try {
			//UIManager.setLookAndFeel("com.sun.java.swing.plaf.metal.MetalLookAndFeel");
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

		} catch (Exception e) {}

		Ordinamento t = new Ordinamento();



	}

}