JTree Kopie

Hallo ,

da google ja fast nur java-forum.org themen ausspuckt konnte ich dazu nicht viel finden :smiley:

es dreht sich um folgendes, ich habe eine klasse diese parst textfiles, daraus entstehen objekte in einer baumstruktur. In dieser klasse erstelle ich einen jtree, die blätter haben checkboxen.
in meiner gui öffne ich dann per doppelklick auf ein tabellen element ein fenster wo dieser baum zusehen ist. Jetzt ist mein problem das wenn ich bei einem element werte im baum angewählt habe und dann für das nächste element den baum öffnen möchte, dann sind die werte, die ich zuvor ausgewählt habe noch gesetzt und der baum ist auch noch ausgeklappt.
Ansich ist mir klar wieso, nur ist mir nicht klar wie ich das ändern kann.
Ich habe schon versucht beim öffnen des fenster ein eigenes jtree-object zu erzeugen und dann die root vom anderen jtree zu „clonen“ mit object.clone(). das hat aber dazu geführt das nur die root angezeigt worden ist :confused:

ich könnte zwar über jedes blatt gehen und diese zurücksetzen gibts da aber nicht noch eine elegantere lösung? im prinzip sollte ich den Jtree in der klasse wo die Textdateien parst nicht berühren. nur den baum in der gui verändern, dazu bräuchte ich aber eine kopie von baum des parsers und da habe ich keine ahnung wie ich das einfach anstellen kann

Möglicherweise müsstet du clone() implementieren, damit du den ganzen baum kopieren kannst.
Gruß,
Freak

ok danke für den tipp, hab die methode jetzt so implementiert scheint zu funktionieren

	@Override
	public MibRoot clone() {
		// TODO Auto-generated method stub
		MibRoot klon = new MibRoot(this.getName());
		klon.setDescription(this.getDescription());
		klon.setReference(this.getReference());
		klon.setDatentype(this.getDatentype());
		klon.setStatus(this.getStatus());
		klon.setObjectIdentifier(this.getObjectIdentifier());
		for (int i = 0; i < this.getChildCount(); i++) {
			klon.add(((AbstractSnmpType) this.getChildAt(i)).clone());
		}
		return klon;
	}

Was ist MibRoot? Wenn es funktioniert, ist es wohl keine GUI-Klasse. Eine GUI-Component (wie etwa einen JTree) zu clonen ist nämlich schwierig. Die Lösung wäre (wie es jetzt vermutlich auch gemacht ist), einen neuen JTree zu erstellen, und dem das geklonte/kopierter Modell zu geben.

ne ist keine gui-klasse. ich habe eine abstracte Klasse die von defaultmutabletreenode erbt, mibroot wiederum erbt von der abstracten klasse und bildet das wurzelelement meines baumes.

ist genau so wie du vermutest, ich clone nur die elemente und gib diese in ein einen neuen jtree,ist vermutlich ne schlechte lösung aber sie funktioniert