Instâncias de classes filhas em JTable - biblioteca TOWEL

Estou com dúvidas sobre como exibir instâncias de classes filhas junto com as classes pai - na JTable - usando a biblioteca TOWEL http://code.google.com/p/towel/wiki/ObjectTableModel

Acontece o seguinte. Quero que a JTable exiba colunas adicionais quando houver um objeto de classe filha no ObjectTableModel.

Vou ilustrar com um exemplo hipotético (hipotético porque minhas classes têm muitos atributos para mostrar, e os atributos não são muito intuitivos…). Neste exemplo, estou usando o Excel para ilustrar como quero apresentar a JTable:

Suponho que eu tenha um ObjectTableModel com objetos da classe Automóvel. Minha JTable será exibida dessa forma:
Figura 1:

Tenho uma classe que é filha de Automóvel. Esta subclasse se chama Carro_Volks. Os atributos dessa subclasse são:
Figura 2:

Eu quero fazer o seguinte: quando eu acrescentar um objeto Carro_Volks na lista de objetos Automovel (do ObjectTableModel), quero que apareçam colunas adicionais na JTable para exibir atributos da subclasse.
Dessa forma, se for adicionada 1 ou mais instâncias de Carro_Volks no TableModel, serão exibidas mais colunas.
Figura 3

Se em uma linha da tabela, houver um objeto Automovel (pai), nessa linha as colunas das subclasses ficarão em branco e não poderão ser editadas.
Se não houver nenhum objeto Carro_Volks no TableModel, a tabela será exibida em seu formato normal (figura 1), ou seja, sem as colunas adicionais.

//Meu código


    ObjectTableModel <Automovel> tableModel;

    public final void initTabela(boolean reset) {

        AnnotationResolver resolver = new AnnotationResolver(Automovel.class);

        if (reset) {

            tableModel = new ObjectTableModel<Automovel>(resolver, "renavam,cor,ano");
            tableModel.setColEditable(1, true);
            jTableColunasRelatorio.setModel(tableModel);

        } else {

            for (Automovel auto : tableModel.getData()) {
                if (auto instanceof Carro_Volks) {

                    List <Automovel> listaAutos = tableModel.getData();
                    tableModel = new ObjectTableModel<Carro_Volks>(resolver, "renavam,cor,ano,modelo_motor,serie_motor");
                    tableModel.addAll(listaAutos);

                    tableModel.setColEditable(1, true);
                    tableModel.setColEditable(3, true);
                    tableModel.setColEditable(4, true);
                       
                    break;
                }
            }

        }   //fim do bloco if..else

    }

Esse código dá uma Exception: “The field cannot be resolved”. Quando tento reiniciar o resolver: resolver = new AnnotationResolver(Carro_Volks.class);, dá pau também…

Ajuda?

Voce não consegue fazer isso automaticamente.

O maximo que voce pode fazer é criar um modelo que represente um carro qualquer com estes atributos, e invés de Automaveis ou Carro_Volks voce adiciona esse modelo que representa um carro generico.

PS: Voce esta instanciando o TableModel dentro do for, voce nao devia fazer isso, voce deve instanciar apenas uma vez e utilizar a mesma instancia.

Ok, entendi.

Vou fazer o seguinte então… colocar no tablemodel um modelo genérico (que pode ser Automovel) e ao lado da JTable um botão para editar as linhas selecionadas.
Dependendo das instâncias selecionadas, vai abrir um JDialog diferente para edição de Carro_Volk ou Automovel ou outras classes filhas, por exemplo…
Assim, poderei editar os atributos das classes filhas (só não vai dar para exibi-los).

Quanto ao laço for, a intenção era só detectar se tinha algum objeto “filho” na lista do Table Model. Se tivesse algum, eu copiava a lista de objetos e “reinstanciava” o TableModel para comportar a classe filha (ObjectTableModel<Carro_Volks>).
Se não tivesse nenhum, aí tudo bem. Eu mantinha a lista de objetos do Table Model e o Table Model como estava.
Só que não funcionou, porque o TableModel passou a dar problemas para guardar objetos Automovel.
Tentar exibir atributos de classes filha no ObjectTableModel dá problema também, falando que o atributo não existe.
Mas, se não é possível, não vai dar certo mesmo né? Valeu!