[RESOLVIDO]TreeTable dinamico com render textbox

Bom dia pessoal, estou tentando criar um TreeTable dinamico e que renderize um textbox em uma das colunas

é o seguinte, na tabela Cliente tem veiculo e ao lado do veiculo vai ter um textbox para informar uma quantidade. Estava seguindo um tutorial, mas não conseguir desenvolver todo. Mostro os veiculos mas não mostro o cliente, dono do veiculo.

aqui as minhas classes:


//este aqui é o veiculomodel que vai estar dentro do clientemodel. E acho que vou ter que colocar um render aqui para o textbox

public class VeiculoModel extends DefaultMutableTreeNode{

    private Veiculo veiculo;

    public VeiculoModel(Veiculo veiculo) {
        this.veiculo = veiculo;
    }

    @Override
    public String toString() {
        return veiculo.getModelo().getNome();
    }


}

Aqui o clientemodel:


//este cara vai ser o root do node

public class ClienteModel extends DefaultMutableTreeNode{

    private ClienteModel parent;
    private Cliente cliente;
    private List<VeiculoModel> childs;

    public ClienteModel(Cliente cliente) {
        childs = new ArrayList<VeiculoModel>();
        this.cliente = cliente;        
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public List<VeiculoModel> getChilds() {
        return childs;
    }

    public void setChilds(List<VeiculoModel> childs) {
        this.childs = childs;
    }

    public void setParent(ClienteModel parent) {
        this.parent = parent;
    }

    public void addChild(VeiculoModel veiculoModel){
        veiculoModel.setParent(parent);
        childs.add(veiculoModel);
    }

    @Override
    public TreeNode getChildAt(int index) {
        return childs.get(index);
    }

    @Override
    public int getChildCount() {
        return childs.size();
    }

    @Override
    public TreeNode getParent() {
        return parent;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final ClienteModel other = (ClienteModel) obj;
        if (this.parent != other.parent && (this.parent == null || !this.parent.equals(other.parent))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 97 * hash + (this.parent != null ? this.parent.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return cliente.getNome();
    }

}

aqui o cara que monta o tree table de fato:



//este cara é encarregado de pegar o cliente ( que já tem os veiculos) e mostrar a treetable

public class ClienteVeiculoTreeTableModel extends DefaultTreeTableModel{

    private List<String> nomesColunas;

    public ClienteVeiculoTreeTableModel(ClienteModel clienteModel) {
        super(clienteModel);

        nomesColunas = new ArrayList<String>();
        nomesColunas.add("NOME CLIENTE");
        nomesColunas.add("QTD FOTOS");
    }

    @Override
    public int getColumnCount() {
        return nomesColunas.size();
    }

    @Override
    public String getColumnName(int column) {
        return nomesColunas.get(column);
    }

    @Override
    public boolean isCellEditable(Object node, int column) {
        return false;
    }

    @Override
    public Object getValueAt(Object node, int column) {
        String value = null;
        if(node instanceof ClienteModel){
             ClienteModel cm = (ClienteModel)node;
             value = cm.toString();
        }else if(node instanceof VeiculoModel){
            VeiculoModel vm = (VeiculoModel)node;
            value = vm.toString();
        }
        return value;
    }

}

//aqui vai o main de teste para ver isto funcionando ( mas não funciona ) mostra só os carros mas não mostra o cliente


public class MainTreeTable {

    public static void main(String[] args) {
        Veiculo v1 = new Veiculo();
        v1.setIdVeiculo(new Long(1));
        Modelo md1 = new Modelo(1);
        md1.setNome("Gol");
        v1.setModelo(md1);
        VeiculoModel vm1 = new VeiculoModel(v1);


        Veiculo v2 = new Veiculo();
        v2.setIdVeiculo(new Long(2));
        Modelo md2 = new Modelo(2);
        md2.setNome("Fiat");
        v2.setModelo(md2);
        VeiculoModel vm2 = new VeiculoModel(v2);

        Cliente c1 = new Cliente(new Long(1));
        c1.setNome("Loja Carro");

        ClienteModel cm1 = new ClienteModel(c1);
        cm1.addChild(vm1);
        cm1.addChild(vm2);

        createGUI(cm1);
    }

    private static void createGUI(ClienteModel cm) {

          JFrame frame = new JFrame("Teste de Tree Table Cliente, Carro e Qtd fotos");

          frame.setSize(500, 300);

          frame.setLocationRelativeTo(null);

          frame.setLayout(new BorderLayout());


          JXTreeTable tree = treeTable(cm);
//          JTree tree2 = convetionalTree(p);


          JScrollPane s1 = new JScrollPane(tree);
//          JScrollPane s2 = new JScrollPane(tree2);

          s1.setPreferredSize(new Dimension(400, 100));
//          s2.setPreferredSize(new Dimension(150, 100));

          frame.add(s1, BorderLayout.EAST);
//          frame.add(s2, BorderLayout.WEST);


          frame.setVisible(true);

          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      }

      private static JXTreeTable treeTable(ClienteModel cm) {
        JXTreeTable tree = new JXTreeTable(new ClienteVeiculoTreeTableModel(cm));
        return tree;
     }
}

Ps.: tentei e estou tentando de tudo. Gostaria de pedir a ajuda dos senhores e desde já agradeço

galera o caso de mostrar eu consegui, criei uma nova classe RootNode para ser o root de tudo.

Agora só falta o renderer para o jtextbox;

aguardo ajuda de vcs e obrigado mais uma vez.