[quote=RicardoCobain]Bem sobre o TreeModel eu estou gerando apartir do Default mesmo, pq ainda n descobri como se faz com o Abstract, ou melhor TreeModel.
Não consegui ver as vantagens, só iria ter mais trabalho [/quote]
Bom, tire isso da cabeça. Você vai ter as seguintes vantagens:
- MENOS trabalho;
- Mais controle sobre a estrutura da sua JTree;
- Código consideravelmente mais claro;
- Separação da lógica de negócios da sua view.
Eu também já postei aqui no GUJ esse Model que facilita um bocado as coisas.
[quote=RicardoCobain]você pode ainda procurar estruturar o seu TreeModel para fazer lazy loading dos grupos
Xiiiiii… Não sei o que é isso… [/quote]
Lazy loading é o seguinte. Ao invés da classe grupo processar a lista de máquinas num construtor, faça o processamento ocorrer apenas quando a lista é solicitada. Basicamente é algo do tipo:
[code]public class GrupoDeMaquinas {
public Array<Maquinas> maquinas;
// … aqui iriam outras propriedades
public GrupoDeMaquinas(String nome) {
this.nome = nome;
this.maquinas = null;
}
public List<Maquinas> getMaquinas() {
if (maquinas == null) // a lista nunca foi solicitada?
this.maquinas = recuperaLista(); //Processa para obter a lista
return lista;
}
//… resto da classe aqui
}[/code]
Com isso, quando a sua árvore for montada a primeira vez, apenas com nós “collapsed”, ela não terá carregado nenhuma máquina na lista e, portanto, ocupará pouca memória. Cada nó expandido vai carregando as máquinas da lista e aumentando a quantidade de memória exigida pelo JTree. É uma técnica muito comum. Note que também pode haver uma pequena demora para abrir o nó a primeira vez.
O java cria os objetos no new e deleta os objetos em algum momento após eles não terem nenhuma referência. Não é necessário deletar o objeto manualmente em nenhum ponto do código, o que por sinal é ótimo. O java ainda é capaz de identificar “ilhas”, fazendo a exclusão do mesmo jeito (objeto A que referencia B, B que referencia A, mas ninguém referencia A ou B)
Você veio do pascal ou do Delphi?