Como construir uma árvore em Java

UMA árvore é um componente Swing fantasia que exibe dados hierárquicos em forma de esboço em Java, que nerds de computador se referem como uma árvore. O tipo de árvore que você provavelmente está mais familiarizado é a estrutura de diretórios da sua unidade de disco. Árvores são criados a partir da JTree classe.

Antes que você possa realmente criar um controle de árvore, você deve construir a árvore que exibe. A maneira mais fácil de fazer isso é usar o DefaultMutableTreeNode classe.

o DefaultMutableTreeNode classe implementa a TreeNode interface. Como resultado, você pode usar DefaultMutableTreeNode objetos para qualquer um dos métodos listados nesta tabela que exigem TreeNode objectos.

ConstrutorDescrição
DefaultMutableTreeNode ()Cria um nó de árvore vazia.
DefaultMutableTreeNode (ObjectuserObject)Cria um nó de árvore com o objeto de usuário especificado.
MétodoDescrição
Void Adicionar (filho TreeNode)Adiciona um nó filho.
TreeNode getFirstChild ()Obtém o primeiro dos filhos deste nó.
DefaultMutableTreeNodegetNextSibling ()Obtém o próximo irmão.
TreeNode getParent ()Obtém pai deste nó.
Objeto getUserObject ()Obtém o objeto de usuário para este nó.

o DefaultMutableTreeNode classe fornece três características básicas para cada nó:

  • o user objeto, que contém os dados representados pelo nó. Você pode usar objetos de qualquer tipo que você deseja para o objeto usuário. O controle de árvore chama o usuário objeto de para sequenciar método para determinar o texto a ser exibido para cada nó. A maneira mais fácil de configurar o objeto de usuário é passá-lo através do DefaultMutableTreeNode construtor.

  • O pai deste nó, a menos que o nó passa a ser a raiz.

  • Todas as crianças deste nó, a menos que o nó passa a ser um nó folha. Você cria nós filho chamando o adicionar método.

o DefaultMutableTreeNode classe tem muitos mais métodos para navegar na árvore do que os mostrados aqui. Dado um nó raiz, no entanto, você pode usar o getFirstChild e getNextSibling métodos para "andar" a árvore inteira e acessar cada nó.

O tee que é construído aqui lista mostra spinoff de três programas de televisão populares do passado:

  • O Andy Griffith Show, que tinha dois desdobramentos: Gomer Pyle, U.S.M.C., e Mayberry R.F.D.

  • Todos na família, que gerou diretamente quatro spinoffs: Os Jeffersons, Maude, Gloria, e Archie Bunker Place. Além disso, dois desses spinoffs teve spinoffs de sua própria envolvendo as empregadas: empregada doméstica The Jeffersons 'tornou-se o tema de uma mostra chamada Efetuando check-in, e empregada doméstica de Maude se tornou o personagem principal Bons tempos.

  • Happy Days, que cindido Mork e Mindy, Laverne e Shirley, e Joanie Loves Chachi.

Você pode tomar muitas abordagens para a construção de árvores, a maioria dos quais envolvem alguma programação recursiva. A maioria dos programas reais que trabalham com árvores precisam de algum tipo de programação recursiva para construir a árvore.

O primeiro passo na criação de uma árvore é declarar um DefaultMutableTreeNode variável para cada nó que não é um nó de folha. Para o exemplo série de TV, vamos começar com o seguinte código:

DefaultMutableTreeModel andy, Archie, feliz, george, maude-

Estas variáveis ​​podem ser variáveis ​​locais no construtor quadro, porque depois que você começa a árvore configurado, você não vai precisar de mais essas variáveis. Você vê por que você não precisa de variáveis ​​para os nós de folha em um momento.

Em seguida, você criar o nó raiz:

DefaultMutableTreeNode raiz = new DefaultMutableTreeNode ( "famosos Spinoffs") -

Agora, para simplificar a tarefa de criar todos os outros nós, você criar um método auxiliar chamado makeShow:

privada DefaultMutableTreeNode makeShow (título String, DefaultMutableTreeNode pai) {DefaultMutableTreeNode show-show = new DefaultMutableTreeNode (título) -parent.add (show) -Retornar show-}

Este método aceita uma string e outro nó como parâmetros e retorna um nó cujo objeto de usuário é definido para o Corda parâmetro. O nó retornado também é adicionada ao nó pai como uma criança. Assim, você pode chamar esse método tanto para criar um novo nó e colocar o nó na árvore.

O próximo passo é criar alguns nós. Continuando o exemplo, você começa com os nós para O Show de Andy Griffith e seus desdobramentos:

andy = makeShow ( "The Andy Griffith Show", root) -makeShow ( "Gomer Pyle, U.S.M.C.", andy) -makeShow ( "Mayberry R.F.D.", andy) -

Aqui, makeShow é chamado para criar um nó para O Andy Griffith Show, com o nó raiz especificado como seu pai. O nó retornado por esse método é salvo no andy variável. Então makeShow é chamado duas vezes para criar os shows spinoff, desta vez especificando andy como o nó pai.

porque nem Gomer Pyle, U.S.M.C., nem Mayberry R.F.D. tinha um show spinoff, você não tem que passar esses nós como o parâmetro pai para o makeShow método.

Em seguida, no exemplo, você tem que criar nós de Todos na família e seus desdobramentos:

Archie = makeShow ( "All in the Family", root) -George = makeShow ( "The Jeffersons", Archie) -makeShow ( "Verificar In", george) -maude = makeShow ( "Maude", Archie) -makeShow ( " Good Times ", Maude) -makeShow (" Gloria ", Archie) -makeShow (" Archie Bunker Place ", Archie) -

Neste caso, tanto os Jeffersons e Maude tem nós filhos do seu próprio. Como resultado, as variáveis ​​são necessários para estes dois programas de modo que eles podem ser transmitidos como o parâmetro principal para makeShow quando você cria os nós de Efetuando check-in e Bons tempos.

Finalmente, aqui está o código que cria os nós para os Dias felizes e seus desdobramentos:

feliz = makeShow ( "Happy Days", raiz) -makeShow ( "Mork e Mindy", feliz) -makeShow ( "Laverne e Shirley", feliz) -makeShow ( "Joanie Loves Chachi", feliz) -

A árvore completa é criada com êxito na memória, para que possa continuar com a tarefa de criar um JTree componente para mostrar a árvore.

menu