Огромное спасибо за ответ, хотя реализовал я все несколько иначе (итератор писать было лень). Короче прилагаю код.... если пощелкать по листам, можно увидеть их индексы, в итоге по этим индексам и производится сравнение....
| Код | import javax.swing.*; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import java.util.ArrayList; import java.util.Iterator;
/** * Created by IntelliJ IDEA. * User: sergey.malahov * Date: 18.02.2008 * Time: 12:50:45 * To change this template use File | Settings | File Templates. */ public class TreeWork extends JFrame { private String [] ch1 = {"пункт1", "пункт2", "пункт3"}; private String [] ch2 = {"параграф1","параграф2"}; JTree tree; static ArrayList map = new ArrayList(); TreeWork(){ super("Работа с моделью дерева."); setDefaultCloseOperation(EXIT_ON_CLOSE); DefaultMutableTreeNode root = new DefaultMutableTreeNode("Оглавление"); DefaultMutableTreeNode chapter1 = new DefaultMutableTreeNode("глава1"); DefaultMutableTreeNode chapter2 = new DefaultMutableTreeNode("глава2"); root.add(chapter1); root.add(chapter2); for(int i = 0; i < ch1.length; i++){ chapter1.add(new DefaultMutableTreeNode(ch1[i], false)); } for(int i = 0; i < ch2.length; i++){ chapter2.add(new DefaultMutableTreeNode(ch2[i], false)); } DefaultTreeModel dtm = new DefaultTreeModel(root, true); tree = new JTree(dtm); indexTree((DefaultMutableTreeNode)tree.getModel().getRoot()); tree.addTreeSelectionListener(new TreeSelectionListener(){ public void valueChanged(TreeSelectionEvent e){ TreePath path = e.getPath(); if ( tree.getModel().isLeaf(path.getLastPathComponent()) ){ System.out.println(map.indexOf(path.getLastPathComponent())); } } }); getContentPane().add(new JScrollPane(tree)); setSize(200, 400); setVisible(true); }
public void indexTree(DefaultMutableTreeNode parant){ for(int i = 0, max = tree.getModel().getChildCount(parant); i<max; i ++) if (!parant.getChildAt(i).isLeaf()) { indexTree((DefaultMutableTreeNode) parant.getChildAt(i)); } else { map.add(parant.getChildAt(i)); } }
public static void main(String [] args){ new TreeWork(); Iterator ind = map.iterator(); while(ind.hasNext()){ System.out.println(ind.next().toString()); } } }
|
|