Olá André!
O JTable é dividido em três camadas, sendo duas de interesse especial para resolver seu problema.
Camada View: responsável por apresentar os dados em cada célula. Utiliza-se de renderizadores e editores. O primeiro é responsável por mostrar num componente o conteúdo que está armazenado na camada Model (que comentarei a seguir). O segundo é responsável por apresentar um componente que permitirá ao usuário interagir com uma determinada célula (quando sua tabela permite edição).
Camada Model: responsável por armazenar os dados e configurações que possam ser necessárias. As classes principais são DefaultTableModel (uma instância de TableModel), RowSorter e RowFilter.
Na primeira classe é onde ficam armazenados os objetos que serão manipulados pelo renderizador e/ou editor da camada View.
RowSorter é utilizado para ordenar os dados apresentados ao usuário. Algo importante aqui, é notar que a ordenação é realizada apenas na camada View, sendo que na Model os objetos continuam inalteráveis.
RowFilter é utilizado para filtrar os dados que a camada Model envia à View.
Aplicando então os conceitos no teu problema, e considerando que o usuário pode alterar a cor de células específicas, então:
- Os dados que serão apresentados ao usuário ficam dentro de um objeto;
- As cores que são apresentadas em cada célula devem ficar dentro desse mesmo objeto (especificado no item 1);
- Na camada View você terá um Renderizador que apresentará os dados, e que também levará em consideração a cor a ser apresentada na célula;
- Como o usuário pode alterar a cor, então é necessário um Editor, que será responsável por interagir com o usuário na mudança dos dados e das cores. Os dados e cores alterados pelo usuário terão que ser registrados na camada Model, para permitir a correta apresentação pelo Renderizador;
- Acredito que o teu RowSorter levará apenas em consideração os dados armazenados na camada Model;
- O mesmo é válido para o RowFilter, que deve filtrar os dados levando em consideração a camada Model;
- Caso o RowSorter ou o RowFilter devam considerar a cor, note que essa informação também está contida no objeto que contém os dados;
- Para fins de clareza, seus dados e a cor devem ficar em objetos distintos, mas encapsulados num mesmo objeto.
Bom André: não sei se entendi bem o seu problema, e muito menos se te ajudei ou compliquei ainda mais, mas acho que pode ser um início para resolvê-lo. Qualquer dúvida, que é muito provável que surja, poste que tentaremos te ajudar.
Abraços