Instâncias de classes filhas em JTable - biblioteca TOWEL  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
diego_qmota
JavaEvangelist
[Avatar]

Membro desde: 28/09/2008 15:44:35
Mensagens: 346
Localização: Paulínia
Offline

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


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?

This message was edited 1 time. Last update was at 11/03/2011 08:16:07


"Go ahead, make my day!"
Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline

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.

Facebook @MarkyHitchhiker +Mark WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
diego_qmota
JavaEvangelist
[Avatar]

Membro desde: 28/09/2008 15:44:35
Mensagens: 346
Localização: Paulínia
Offline

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 <Automovel> 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!

This message was edited 1 time. Last update was at 11/03/2011 08:26:13


"Go ahead, make my day!"
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team