Trabalhando com AbstractTreeModel

Pessoal, Bom Dia,

  Estou desenvolvendo uma aplicação com as dicas passadas pelo mestre ViniGodoy referente a AbstractTreeModel, consegui montar a árvore sem limites de itens ou categorias, e também sem limite de níveis, podem ter várias subcategorias umas dentro das outras.

  A dúvida agora é uma coisa muito besta, consigo adicionar e remover itens e categorias do menu sem problema algum, mas não consigo remover a raiz, alguém poderia me dar uma força com isso? Como remover a raiz de um JTree utilizando AbstractTreeModel ??

Você não pode “remover a raiz”.

Entretanto, você pode escondê-la, que é o que você provavelmente vai precisar:

http://docs.oracle.com/javase/7/docs/api/javax/swing/JTree.html#setRootVisible(boolean)

Dica: tente sempre separar na sua cabeça o que está sendo visualizado (visão) do que está sendo guardado em memória (modelo).

Isso é um erro muito comum, e um exemplo clássico dele é quando alguém usa um DateFormat para converter uma String em um java.util.Date, e depois fica surpreso porque, ao imprimir o Date com toString, a data não fica no formato String original e sim naquele formato default todo esquisito. É que um java.util.Date (modelo) não é guardado como dia/mês/ano/hora/minuto/segundo de uma forma visualizável; é guardado em um formato mais simples - número de milissegundos desde 1/1/1970 - e quando é impresso com toString em vez de usar um DateFormat, sai naquele formto todo esquisito.

Como você está ainda confundindo as duas coisas ainda, você sugeriu “remover a raiz do modelo”, o que não faz absolutamente nenhum sentido.

[quote=entanglement]Você não pode “remover a raiz”.

Entretanto, você pode escondê-la, que é o que você provavelmente vai precisar:

http://docs.oracle.com/javase/7/docs/api/javax/swing/JTree.html#setRootVisible(boolean)

Dica: tente sempre separar na sua cabeça o que está sendo visualizado (visão) do que está sendo guardado em memória (modelo).

Isso é um erro muito comum, e um exemplo clássico dele é quando alguém usa um DateFormat para converter uma String em um java.util.Date, e depois fica surpreso porque, ao imprimir o Date com toString, a data não fica no formato String original e sim naquele formato default todo esquisito. É que um java.util.Date (modelo) não é guardado como dia/mês/ano/hora/minuto/segundo de uma forma visualizável; é guardado em um formato mais simples - número de milissegundos desde 1/1/1970 - e quando é impresso com toString em vez de usar um DateFormat, sai naquele formto todo esquisito.

Como você está ainda confundindo as duas coisas ainda, você sugeriu “remover a raiz do modelo”, o que não faz absolutamente nenhum sentido.

[/quote]

Meu irmão muito obrigado pelo esclarecimento, agradeço imensamente a ajuda, depois vou postar a app completa aqui, ta sendo uma aula de java para mim, é um programinha simples de guardar senhas mas esse JTree ta dando um trabalho que não é fácil hehehehe