UNItopia News: Brett Computer, Gruppe Java_und_Co, Artikel 113

-------------------------------------------------------------------------------
Titel: DONE!
Artikel: 113                                           Bezug: 112
Verfasser: Faulpelz                                    Datum: 30.05.02 18:01:21
-------------------------------------------------------------------------------
Danke! Ich habe gerade eben den Unterschied zwischen Klassen- und
Instanzvariablen kapiert! :-)

Aber das naechste Problem duerfte ein bissel verzwickter sein:

Wie muss ich vorgehen, wenn ich z.B. alle Objekte des Typs Person in 
einem Baum (JTree) darstellen will? Auch hier sollte ich vielleicht
ein wenig weiter ausholen, um den Sachverhalt zu erklaeren:

Ich habe links einen Baum, in dem z.B. alle Personen angezeigt werden
sollen und zwar mit somePerson.getName() als String. Jetzt will ich
in diesem Baum einen Namen selektieren koennen und dem Panel rechts
daneben mitteilen, welches Objekt ich angeklickt habe, um dort die Daten
dieses Objektes bearbeiten zu koennen.

Was ich an Funktionaltaet bereits umgesetzt habe ist ein Baum mit einer
Menge von manuell eingefuegten Knoten und Blaettern, die allesamt Strings
sind. Den Baum baue ich mit Befehlen der Art:
((DefaultTreeModel)jStandardNavigationTree.getModel()).insertNodeInto(new
DefaultMutableTreeNode("...",knotenobjekt,index)
auf. Jetzt will ich statt diesen "..." eigentlich ein Objekt der Klasse
Person einfuegen und angezeigt werden soll das Ergebnis von 
person.getName() (String). Weiterhin will ich wie gesagt, dass beim Markieren
eines Namens eine Referenz auf das zugehoerige Objekt 
weitergegeben wird.

Zum Schluss waere da noch eine ganz kurze Frage:

tmp ist eine Variable vom Typ String, allPersons ist ein Vector, der eine
Menge von (10) Objekten der Klasse Person enthaelt, getName ist eine
Methode der Klasse Person, die einen String liefert. Jetzt das Problem:

Ich will der Variable tmp den Namen der ersten Person zuweisen. Ich versuche:

tmp=allPersons.get(1).getName();
                  ^

...und kriege ein cannot resolve symbol.

Ich versuche es mit Casten:

tmp=(Person)(allPersons.get(1)).getName();
            ^

...und kriege ebenfalls ein cannot resolve symbol, aber an einer anderen
Stelle. 

Warum? (Ich weiss uebrigens, dass ich hier die zweite Person im Vector
kriege und nicht die erste.)

Falls das eine Rolle spielt:

allPersons=somePerson.getAllPerson();

Dies ist eine Funktion, die den Vector (Klassenvariable) zurueckliefert,
in dem die einzelnen Personenobjekte enthalten sind.

Irgendwo hab' ich da noch einen Klemmer drin, wobei mit der Loesung des
ersten Problems das zweite im Prinzip von allein geklaert waere, aber
ich will ja vielleicht auch noch ein bissel was lernen. ;-)

Danke schonmal im Voraus!
Faulpelz