java DirTree
java DirTree ~henrik/labbar
Show details är markerad.
Liv och roten ska ha tre barn, Växter,
Djur och Svampar som i sin tur innehåller
ordningar, underordningarn familjer, släkten och arter.
Börja med några små ändringar:
private void buildTree() suddar du
allt och skriver nya satser som gör följande.
child på samma sätt som rotnoden men
med texten Växter.
root som förälder.
Några rader längre ner i koden ser du hur det går till.
<Biosfär namn="Liv"> är allt som fortplantar sej <Rike namn="Växter"> kan inte förflytta sej </Rike> <Rike namn="Djur"> kan förflytta sej </Rike> <Rike namn="Svampar"> är varken djur eller växter </Rike> </Biosfär>Förutom nodens namn finns nu också en nivå (t ex Rike) och en förklarande text men för dom finns ingen plats i klassen
DefaultMutableTreeNode.
Skriv därför en egen subklass Nod med String-variablerna
level och text. Nu behövs bara en rekursiv metod som kan
anropas så här.
root=läsNod(); //Läser XML-filen och skapar hela trädetInnan metoden anropas bör man ha glufsat den första vänstervinkeln ur filen så att
läsNod efter att ha skapat en tom nod kan
läsa starttaggen och skriva in nivån, läsa attribut och sätta nodbeteckning
med nod.setUserObject(...),
glufsa högervinkeln, anropa läsMellan(nod) som läser in den
förklarande texten och adderar eventuella barnnoder.
När sluttagg nås
ska den läsas och jämföras med starttaggen och eventuell RuntimeException
kastas, men normalt returneras den skapade noden. Metoden förklaras i
föreläsning 7.
Liksom i det ursprungliga programmet DirTree ska du kunna ange filnamn
efter exekveringskommandot
java LifeTree livfil
och om inget namn anges ska programmet ta filen Liv.xml.
Art: Mås gillar Vaxholmsbåtar.
Fixa så att showDetails(TreePath p) lägger ut denna text
i sin JOptionPane.
Extrauppgift:
Ordna så att man också får hela kedjan utskriven
på formen men allt som är Mås är Fåglar är Djur är Liv.
Användbar metod i TreePath är
getLastPathComponent() och i
DefaultMutableTreeNode
och därmed i
Nod finns metoden getParent().