JTableHeader com JCheckBox

Boa tarde, gostaria de uma opinião, ainda sou muito “cru” em java e precisei colocar um checkbox no cabeçalho da tabela, li o manual e criei um HeaderRenderer como segue abaixo, ele esta funcionando como preciso, mas isso não quer dizer q possa estar totalmente certo ou que não existe uma forma mais facil e pratica, se puderem ajudar agradeço.

Abs,

[code] public class SgiCellCheckBoxRenderer extends JCheckBox implements TableCellRenderer {

    public SgiCellCheckBoxRenderer() {
        super();
        this.setOpaque(true);
        this.setSelected(false);
        this.setBackground(tbTabela.getTableHeader().getBackground());
        
        tbTabela.getTableHeader().addMouseListener(new MouseListener() {
            SgiCellCheckBoxRenderer scbr = SgiCellCheckBoxRenderer.this;
            
            @Override
            public void mouseClicked(MouseEvent e) {
                // Acessa os metodos da tabela
                SgiTable stb = (SgiTable) ((JTableHeader)e.getSource()).getParent().getParent();
                // Só libera checkbox se a tabela contiver dados
                if (!stb.isEmpty()) {
                    // Marca ou desmarca linha do Header
                    scbr.setSelected(!isSelected());
                    // Marca ou desmarca todas as linhas da tabela
                    stb.setRowMarkedAll(isSelected());
                    // Atualiza contador de linhas marcadas
                    stb.nTotMarcadas = (isSelected()?nTotColunas:0);
                }                    
            }

            @Override
            public void mousePressed(MouseEvent e) {
            }

            @Override
            public void mouseReleased(MouseEvent e) {
            }

            @Override
            public void mouseEntered(MouseEvent e) {
            }

            @Override
            public void mouseExited(MouseEvent e) {
            }
        });
    }
    
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        return this;
    }
}

[/code]