0 valutazioniIl 0% ha trovato utile questo documento (0 voti)
47 visualizzazioni6 pagine
A classe DefaultTreeModel é a implementação padrão da interface TreeModel para gerenciar os dados de uma JTree, representando cada nó como uma instância de TreeNode e mantendo listeners para eventos de mudança.
A classe DefaultTreeModel é a implementação padrão da interface TreeModel para gerenciar os dados de uma JTree, representando cada nó como uma instância de TreeNode e mantendo listeners para eventos de mudança.
A classe DefaultTreeModel é a implementação padrão da interface TreeModel para gerenciar os dados de uma JTree, representando cada nó como uma instância de TreeNode e mantendo listeners para eventos de mudança.
A classe DefaultTreeModel a implementao concreta padro da interface TreeModel. Ela
define a raiz e cada n da JTree como instncias da interface TreeNode. Esta classe tambm mantm uma EventListenerList de TreeModelListeners e fornece vrios mtodos para disparar TreeModelEvents quando qualquer coisa na JTree mudar. Um flag asksAllowedChildren mantido a fim de saber se um n permite que ns filhos s ejam adicionados antes mesmo de tentarmos efetuar a operao. Outros mtodos tambm definidos por esta classe so: getPathToRoot(TreeNode aNode, int depth) - Obtm um array de ns a partir de um dete rminado n at o n raiz; insertNodeInto(MutableTreeNode newChild, MutableTreeNode parent, int index) - In sere um novo n no local determinado por index; removeNodeFromParent(MutableTreeNode node) - Remove um n; reload(TreeNode node) - Atualiza a JTree a partir de um n determinado. Entendendo a classe DefaultMutableTreeNode A classe DefaultMutableTreeNode uma implementao concreta da interface MutableTreeN ode. Um objeto desta classe pode ter um objeto associado, e tal objeto pode ser obtido com uma chamada ao mtodo getUserObject(). Esta funcionalidade til quando qu eremos associar o ttulo de um ns a um identificador de um registro em uma tabela d e um banco de dados. Esta classe armazena todos os seus ns filhos em um Vector chamado children, que a ssociado ao mtodo children(), que retorna um Enumeration de todos os ns filhos. Po demos tambm usar o mtodo getChildAt() para obter o n correspondente a um determinad o ndice. Entendendo a interface TreeModel A interface TreeModel gerencia os dados a serem usados em uma JTree, assumindo q ue cada n mantm um array de ns filhos. Ns so representados como Objects e um n raiz se parado definido. Esta interface fornece mtodos para: getChild(Object parent, int index) - Obter um n baseado em um n pai e ndice; getChildCount(Object parent) - Obter a quantidade de filhos de um determinado n; getIndexOfChild(Object parent, Object child) - Retornar o ndice de um determinado n baseado em um determinado pai; isLeaf(Object node) - Verificar se um determinado ns uma folha (no possui filhos); valueForPathChanged(TreePath path, Object newValue) - Notificar a JTree que um n destino de um determinado TreePath foi modificado. Esta interface tambm fornece mtodos para adicionar ou remover TreeModelListeners, os quais devem ser notificados quando ns so adicionados, removidos ou alterados. E stes mtodos so: addTreeModelListener(TreeModelListener l) e removeTreeModelListene r(TreeModelListener l). O TreeModel de uma JTree pode ser obtido ou definido usa ndo-se os mtodos getModel() e setModel(). /* Este exemplo mostra como criar uma JTree bem simples. Os itens so fornecidos como um array de objetos, de forma que cada sub-array constitui uma seo da rvore. Os elementos so inseridos em suas devidas posies usando uma funo recursiva. */ import javax.swing.*; import java.awt.*; import javax.swing.tree.*; public class Estudos extends JFrame{ public Estudos(){ super("Exemplo de uma JTree simples"); Object[] linguagens = { "Linguagens", new Object[]{ "Compiladas", "C++", "Delphi" }, new Object[]{ "Interpretadas", "JavaScript", "Python", "Ruby" } }; DefaultMutableTreeNode raiz = montar(linguagens); JTree arvore = new JTree(raiz); Container c = getContentPane(); c.setLayout(new FlowLayout()); JScrollPane scrollPane = new JScrollPane(arvore); c.add(scrollPane);
setSize(400, 300); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private DefaultMutableTreeNode montar(Object[] hier){ DefaultMutableTreeNode no = new DefaultMutableTreeNode(hier[0]), filho;
for(int i = 1; i < hier.length; i++){ Object n_no = hier[i]; if(n_no instanceof Object[]) // n possui filhos filho = montar((Object[])n_no); else filho = new DefaultMutableTreeNode(n_no); // folha no.add(filho); } return(no); } } /* Este exemplo mostra como obter o texto de um tem selecionado na JTree. */ import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.tree.*; public class Estudos extends JFrame{ JTree arvore; public Estudos(){ super("Exemplo de uma JTree simples"); DefaultMutableTreeNode raiz = montarArvore(); arvore = new JTree(raiz); JButton btn = new JButton("Obter Texto"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ if(!arvore.isSelectionEmpty()){ DefaultMutableTreeNode no = (DefaultMutableTreeNode) arvore.getLastSelectedPathComponent(); JOptionPane.showMessageDialog(null, "Texto do tem selecionado: " + no.toString(), "JTree", JOptionPane.INFORMATION_MESSAGE); } } } ); Container c = getContentPane(); c.setLayout(new FlowLayout()); JScrollPane scrollPane = new JScrollPane(arvore); c.add(scrollPane); c.add(btn);
setSize(400, 300); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private DefaultMutableTreeNode montarArvore(){ DefaultMutableTreeNode raiz = new DefaultMutableTreeNode("Cidades"); DefaultMutableTreeNode regiao = new DefaultMutableTreeNode("Regio"); regiao.add(new DefaultMutableTreeNode("Centro-Oeste")); regiao.add(new DefaultMutableTreeNode("Norte")); regiao.add(new DefaultMutableTreeNode("Sul"));
raiz.add(regiao); return raiz; } } /* Este exemplo mostra como criar uma JTree bem simples. Os itens so fornecidos a partir de um mtodo. */ import javax.swing.*; import java.awt.*; import javax.swing.tree.*; public class Estudos extends JFrame{ public Estudos(){ super("Exemplo de uma JTree simples"); DefaultMutableTreeNode raiz = montarArvore(); JTree arvore = new JTree(raiz); Container c = getContentPane(); c.setLayout(new FlowLayout()); JScrollPane scrollPane = new JScrollPane(arvore); c.add(scrollPane);
setSize(400, 300); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private DefaultMutableTreeNode montarArvore(){ DefaultMutableTreeNode raiz = new DefaultMutableTreeNode("Cidades"); DefaultMutableTreeNode regiao = new DefaultMutableTreeNode("Regio"); regiao.add(new DefaultMutableTreeNode("Centro-Oeste")); regiao.add(new DefaultMutableTreeNode("Norte")); regiao.add(new DefaultMutableTreeNode("Sul"));
raiz.add(regiao); return raiz; } } /* Este exemplo mostra como saber se o tem selecionado na JTree possui filhos. */ import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.tree.*; public class Estudos extends JFrame{ JTree arvore; public Estudos(){ super("Exemplo de uma JTree simples"); DefaultMutableTreeNode raiz = montarArvore(); arvore = new JTree(raiz); JButton btn = new JButton("Obter Texto"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ if(!arvore.isSelectionEmpty()){ DefaultMutableTreeNode no = (DefaultMutableTreeNode) arvore.getLastSelectedPathComponent(); if(no.isLeaf()) JOptionPane.showMessageDialog(null, "Este tem NO possui filhos", "JTree", JOptionPane.INFORMATION_MESSAGE); else JOptionPane.showMessageDialog(null, "Este tem possui filhos", "JTree", JOptionPane.INFORMATION_MESSAGE); } } } ); Container c = getContentPane(); c.setLayout(new FlowLayout()); JScrollPane scrollPane = new JScrollPane(arvore); c.add(scrollPane); c.add(btn);
setSize(400, 300); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private DefaultMutableTreeNode montarArvore(){ DefaultMutableTreeNode raiz = new DefaultMutableTreeNode("Cidades"); DefaultMutableTreeNode regiao = new DefaultMutableTreeNode("Regio"); regiao.add(new DefaultMutableTreeNode("Centro-Oeste")); regiao.add(new DefaultMutableTreeNode("Norte")); regiao.add(new DefaultMutableTreeNode("Sul"));