Duvidas Sobre Mudar Cor de JTable

Eu tenho uma tabela que eu preciso mudar de determinadas linhas da coluna, o que acontece é que no meu AbstractTableModel eu tenho 2 lista, uma que tem o número da linha e ela armazena as posições da minha “matriz”, outra com uma list que tem outra list dentro, funcionando igual uma matriz. Os valores de controle eu não passo para a JTable.
Estava vendo sobre fazer uma classe que implementa TableCellEditor, mas como é em uma separada ela só passa o conteúdo visível da tabela, e é justamente na minha variavel de controle que tenho a informação de quais linhas mudarem a cor. Tem alguma forma de passar esse valor sem ter que adicionar a tabela mesmo que em tamanho 0 essas outras informações? Se quiserem entender mais sobre o que falei do meu Abstract segue o codigo:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ModelosTabelas.JFVendaBar;

import ItensHibernate.CadastroVendaItemBar;
import ItensHibernate.VendaItemBarTemporario;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Programinhas bruno.chagas
 */
public class TableModelVendaItemBar extends AbstractTableModel {

    private List<VendaItemBarTemporario> listaDeVendaItemBar;
    private List<ItensTemporarioTabelaJFVendaBar> itensTemporarioTabelaJFVendaBar;
    private String[] colunas = {"Item Entregue","Codigo","Descrição","Quantidade"};
    private String[] colunas2 = {"Item Entregue","Codigo","Descrição","Quantidade","Adicional"};
    private boolean[] celulasEditaveis;
    private boolean[] celulasEditaveisAdicional;
    private List<Class> listaClasses;
    private List<Class> listaClassesAdicional;

    public TableModelVendaItemBar(){
        this.listaDeVendaItemBar = new ArrayList<>();
        this.itensTemporarioTabelaJFVendaBar = new ArrayList<>();
        this.listaClasses = new ArrayList<>();
        celulasEditaveis = new boolean[colunas.length];
        celulasEditaveisAdicional = new boolean[colunas.length];
        iniciarCelulasEditaveis();
        iniciarCelulasEditaveisAdicional();
        iniciarListaClasses();
        //iniciarListaClassesAdicional();
    }
    
    private void iniciarCelulasEditaveis(){
        celulasEditaveis[0] = true;
        celulasEditaveis[1] = false;
        celulasEditaveis[2] = false;
        celulasEditaveis[3] = false;        
    }
    private void iniciarCelulasEditaveisAdicional(){
        celulasEditaveisAdicional[0] = false;
        celulasEditaveisAdicional[1] = false;
        celulasEditaveisAdicional[2] = false;
        celulasEditaveisAdicional[3] = false;        
    }
    
    private void iniciarListaClasses(){
        listaClasses.add(Boolean.class);
        listaClasses.add(Integer.class);
        listaClasses.add(String.class);
        listaClasses.add(Integer.class);
    }
    
    private void iniciarListaClassesAdicional(){
        listaClassesAdicional.add(null);
        listaClassesAdicional.add(Integer.class);
        listaClassesAdicional.add(String.class);
        listaClassesAdicional.add(Integer.class);
    }
    
    public void setCelulasEditaveis(boolean[] celulasEditaveis){
        this.celulasEditaveis=celulasEditaveis;
    }
    public void setCelulasEditaveis(int columnIndex, boolean celulaEditavel){
        celulasEditaveis[columnIndex]=celulaEditavel;
    }
    public boolean[] getCelulasEditaveis(){
        return celulasEditaveis;
    }
    public boolean getCelulasEditaveis(int columnIndex){
        return celulasEditaveis[columnIndex];
    }
    /**
     * Retorna uma linha completa da tabela
     * @param rowIndex
     * @return CadastroVendaItemBar
     */
    /*
    public CadastroVendaItemBar getCadastroVendaItemBar(int rowIndex){
        return this.listaDeVendaItemBar.get(rowIndex);
    }
    */
    
    /**
     * Adiciona uma pessoa a tabela (cria uma linha)
     * @param listaDeVendaItemBar 
     */
    
    /*
    public void addCadastroVendaItemBar(CadastroVendaItemBar CadastroVendaItemBar){
        this.listaDeVendaItemBar.add(CadastroVendaItemBar);
        fireTableDataChanged();
    }
    */
    public void addLista(List<VendaItemBarTemporario> listaDeVendaItemBar){
        this.listaDeVendaItemBar.clear();
        this.listaDeVendaItemBar=listaDeVendaItemBar;
        for(int i=0;i<listaDeVendaItemBar.size();i++){
            ItensTemporarioTabelaJFVendaBar itemTemporario= new ItensTemporarioTabelaJFVendaBar();
            itemTemporario.posicaoLista=i;
            itemTemporario.posicaoListaAdicional=-1;
            itensTemporarioTabelaJFVendaBar.add(itemTemporario);
            for(int j=0;j<listaDeVendaItemBar.get(i).getListaVendaItemAdicionalTemporario().size();j++){
                itemTemporario= new ItensTemporarioTabelaJFVendaBar();
                itemTemporario.posicaoLista=i;
                itemTemporario.posicaoListaAdicional=j;
                itensTemporarioTabelaJFVendaBar.add(itemTemporario);
            }            
        }
        System.out.println(listaDeVendaItemBar.size());
    }
    
    /**
     * Remove uma pessoa da tabela (remove uma linha)
     * @param rowIndex 
     */
    public void removeCadastroVendaItemBar(int rowIndex){
        this.listaDeVendaItemBar.remove(rowIndex);
        fireTableDataChanged();
    }
    
    
    /**
     * Retorna a quantidade de linhas da tabela
     *
     * @return int
     */
    @Override
    public int getRowCount() {

        return this.itensTemporarioTabelaJFVendaBar.size();
    }

    /**
     * Retorna o numero de colunas da tabela
     *
     * @return int
     */
    @Override
    public int getColumnCount() {
        return colunas.length;
    }

    /**
     * Retorna o valor especifico de uma celula
     * @param rowIndex
     * @param columnIndex
     * @return Object
     */
    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {

        //switch na coluna
        switch (columnIndex) {

            //coluna do nome da pessoa
            case 0:
                if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
                    return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getItemEntregue();
                }
                else{
                    return null;
                }
            //coluna da idade da pessoa
            case 1:
                if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
                    return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getCodigo();
                }
                else{
                    return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).getAdicional().getCodigo();
                }
            case 2:
                if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
                    return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getProduto().getNome();
                }
                else{
                    return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).getAdicional().getNome();
                }
            case 3:
                if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
                    return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getQuantidade();
                }
                else{
                    return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).getQuantidade();
                }
            default:
                return this.listaDeVendaItemBar.get(rowIndex);
        }
    }

    public java.util.List getLinhas(){
        return listaDeVendaItemBar;
    }
    
    @Override
    public void setValueAt(Object Value,int rowIndex, int columnIndex) {
        switch (columnIndex) {  
            case 0:
                if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
                    listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).setItemEntregue((Boolean) Value);
                }                
                break;
            case 1:
                if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
                    listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).setCodigo((Integer) Value);
                }
                else{
                    listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).getAdicional().setCodigo((Integer) Value);
                }
                break;
            case 2:
                if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
                    listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getProduto().setNome((String) Value);
                }
                else{
                    listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).getAdicional().setNome((String) Value);
                }
                break;
            case 3:
                if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
                    listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).setQuantidade((Integer) Value);
                }
                else{
                    listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).setQuantidade((Integer) Value);
                }
                listaDeVendaItemBar.get(rowIndex).setQuantidade((Integer) Value);
                break;            
        }        
        fireTableCellUpdated(rowIndex,columnIndex);
    }
    
    @Override
    public String getColumnName(int columnIndex) {
        return this.colunas[columnIndex];
    }
       
    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex){
        if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
            return celulasEditaveis[columnIndex];
        }
        else{
            return celulasEditaveisAdicional[columnIndex];
        }
    }
    
    @Override
    public  Class getColumnClass(int columnIndex) {
        return listaClasses.get(columnIndex);
    }
    /*
    @Override
    public void mouseClicked(MouseEvent e) {
        
    }
    */
    
}