Hi I'm creating an applet to show an outline in the form of a Jtree. I created a class outline that supposedly parses a string and creates the outline in memory, allowing me to write it out as string, or as a tree. The Outline class is in the attached file. I call this outline in the following way : out1 = new Outline("(No1,body1,(No2,Body2,(No3,Body3)),(No4,Body4))(No5, Body5)(No6, Body6)"); DefaultMutableTreeNode root1 = out1.toTree(); DefaultMutableTreeNode root2 = out1.toTree(); When i run the above i only get No6 No6 and i was expecting to get No1 No5 No6 What am i doing wrong ? I should add that i'm extremely newbie on this java thing and as such the code is horrible, uggly, probablu not very much OO, etc Thanks -- Mario Filipe [EMAIL PROTECTED] http://neptuno.sc.uevora.pt/~mjnf
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.tree.*; import javax.swing.event.*; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; public class Outline{ private Outline prev, next, child; private String title, body; private Outline(String source, Outline previous){ int len = source.length(); int ciclo = 0; int npars = 0; int initialPos = -1; int finalPos = -1; if (len != 0){ // Se a string é vazia, não vale a pena estar a fazer nada // Agora percorre-se a string toda á procura dos nós que são filhos da raiz while (ciclo < len){ if (source.charAt(ciclo) == '('){ npars ++; if (npars == 1 && initialPos == -1) initialPos = ciclo; } if (source.charAt(ciclo) == ')'){ npars --; if (npars == 0 && finalPos == -1) finalPos = ciclo +1; } if (initialPos != -1 && finalPos != -1){ // já se encontrou o que define um nó String no = new String(source.substring(initialPos, finalPos)); int start = 1; int stop = no.indexOf(","); title = no.substring(start, stop); start = stop + 1; stop = no.indexOf(",", start); if (stop == -1) stop = no.length() -1; body = no.substring(start, stop); if (stop != no.length() -1) // tem filhos child = new Outline(no.substring(stop +1, no.length()-1)); prev = previous; next = new Outline(source.substring(finalPos, source.length()), this); initialPos = -1; finalPos = -1; } ciclo ++; } // while } } public Outline(String source){ int len = source.length(); int ciclo = 0; int npars = 0; int initialPos = -1; int finalPos = -1; if (len != 0){ // Se a string é vazia, não vale a pena estar a fazer nada // Agora percorre-se a string toda á procura dos nós que são filhos da raiz while (ciclo < len){ if (source.charAt(ciclo) == '('){ npars ++; if (npars == 1 && initialPos == -1) initialPos = ciclo; } if (source.charAt(ciclo) == ')'){ npars --; if (npars == 0 && finalPos == -1) finalPos = ciclo +1; } if (initialPos != -1 && finalPos != -1){ // já se encontrou o que define um nó String no = new String(source.substring(initialPos, finalPos)); int start = 1; int stop = no.indexOf(","); title = no.substring(start, stop); start = stop + 1; stop = no.indexOf(",", start); if (stop == -1) stop = no.length() -1; body = no.substring(start, stop); if (stop != no.length() -1) // tem filhos child = new Outline(no.substring(stop +1, no.length()-1)); prev = null; next = new Outline(source.substring(finalPos, source.length()), this); initialPos = -1; finalPos = -1; } ciclo ++; } // while } } public String toString(){ return null; } private DefaultMutableTreeNode toTree(DefaultMutableTreeNode myRoot){ return null; } public DefaultMutableTreeNode toTree(){ DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); Outline here = this; while (here.prev != null) here = here.prev; while (here.next != null){ System.out.println(here.title); here = here.next; } return root; } private DefaultMutableTreeNode toTree(int i){ return null; } public Outline add(Outline Father, Outline Son){ return null; } public Outline remove(Outline wich){ return null; } public Outline edit (Outline wich){ return null; } }