Criei duas classes: a primeira estende AbstractCellEditor e a outra, DefaultTableCellRenderer, onde elas não inicializam seu componente no contrutor, e sim em seus métodos getTableCellEditorComponent(…) e getTableCellRendererComponent(…), pois o componente é escolhido de acordo com o objeto na célula da tabela em questão (ou um JCheckBox, quando o objeto é um boolean, ou um JTextField, quando o objeto é um String).
Faço isso pois não se sei qual objeto está na célula, evitando incialização desnecessária no construtor (por exemplo, a tabela pode somente ter Strings, e iniciar o JCheckBox no contrutor seria desnecessário).
Porém, não entendo como funciona a instanciação do componente: somente um componente é usado em todas as células da tabela, mesmo iniciando o componente várias vezes em cada execução dos métodos descritos lá em cima? Ou são várias instâncias criadas, isto é, seria melhor ter incializado o componente no contrutor? :-o