Cor do Texto de uma Coluna do JTable vs Seleção

Olá a todos!

Fiz o seguinte código java em baixo que altera a cor do texto de uma coluna do JTable em função da String escrita.
O meu problema está na cor de seleção das linhas da tabela que não consegue sobrepor-se na coluna onde apliquei a cor do texto!!

Alguém consegue ajudar-me a encontrar uma solução para este problema?
Obrigados


public class Celula_Tipo_Texto extends JFrame {

        public Celula_Tipo_Texto() {

                // Nomes das colunas da tabela:
                String[] colunas = {"Nome", "Idade", "Sexo"};

                // Linhas da tabela    
                Object[][] conteudo = {
                        {"Osmar J. Silva", "32", "Masculino"},
                        {"Maria Clara Gomes", "19", "Feminino"},
                        {"Fernando Gomes", "15", "Masculino"},
                        {"Indefenido", "15", "Outro"},
                        {"Rute Cassandra", "10", "Feminino"}
                };

                // Constrói a tabela
                JTable tabela = new JTable(conteudo, colunas);

                // Render para alterar a cor do  texto da Célula da terceira coluna:
                TableCellRenderer tcr = new ColorirTexto();
                TableColumn column = tabela.getColumnModel().getColumn(2);
                column.setCellRenderer(tcr);

                tabela.setPreferredScrollableViewportSize(new Dimension(350, 100));
               
                // Define a cor para linha selecionada:
                tabela.setSelectionBackground(new Color(204,204,0));

                Container c = getContentPane();
                c.setLayout(new FlowLayout());

                JScrollPane scrollPane = new JScrollPane(tabela);
                c.add(scrollPane);

            setLocationRelativeTo(this);
                setSize(400, 300);
                setVisible(true);

        }

        public static void main(String args[]) {
                Celula_Tipo_Texto app = new Celula_Tipo_Texto();
                app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }

}

// Classe para Colorir o Texto de uma Coluna da Tabela:
class ColorirTexto extends JLabel implements TableCellRenderer {

        @Override
        public Component getTableCellRendererComponent(
                        JTable table, Object value, boolean isSelected,
                        boolean hasFocus, int row, int column) {

                // ALTERA A COR:
                if (value.toString().equals("Masculino")) {// Caso o valor da Célula seja igual a "Masculino":
                        setForeground(Color.BLUE);//Altera para esta cor.
                } else if (value.toString().equals("Feminino")) {// Caso o valor da Célula seja igual a "Masculino":
                        setForeground(Color.RED);//Altera para esta cor.
                } else {//Nos restantes casos:
                        setForeground(Color.BLACK);//Altera para esta cor.
                }

                setText(value.toString());

                return this;
        }

        @Override
        public void validate() {
        }

        @Override
        public void revalidate() {
        }

        @Override
        protected void firePropertyChange(String propertyName,
                        Object oldValue, Object newValue) {
        }

        @Override
        public void firePropertyChange(String propertyName,
                        boolean oldValue, boolean newValue) {
        }
}