Speichermethode funkitoniert nur halb

Scar47

Aktives Mitglied
Also, ich habe Einen Baum, den will ich in ner datei speichern und die datei später wieder laden zu können. aus irgendeinem grund speichert der aber nur einen teil des inhalte des baumes, der baum hat ne eigene klasse als inahltstyp, die aus name, alter und geschlecht besteht. jetzt habe ich versucht den zu speichern aber aus irgendeinem grund bekomme ich beim draufklicken nur den namen, alter und geschlächt sind iwie weg gefallen.
Java:
try{
			ObjectInputStream ois =new ObjectInputStream(new FileInputStream("baum.ser"));			
			baum=(Baum)(ois.readObject());			
			ois.close();
			System.out.println("laden");
			baum.show(listbox);
		}catch(Exception ex){			
			
		}
also in der listbox gibter mir nur die namen aus, das ist so gewollt, aber wenn ich dann in der box auf den namen klicke, dann bekomme ich nur nen error, der mir sagt das geht nicht. wenn ich das so normal einfüge geht das aber.
versteht einer das Problem? xD und weiß vill uch noch hilfe? :oops:
 

w0ddes

Bekanntes Mitglied
Nunja, wenn du schon sagst "speichert nicht richtig" solltest du vielleicht auch den Speicher-Code mal posten.
 

Scar47

Aktives Mitglied
Java:
public void speichern_baum (){
		 try{			
		
				FileOutputStream fos=new FileOutputStream("baum.ser");			
				ObjectOutputStream oos=new ObjectOutputStream(fos);			
				oos.writeObject(baum);			
				oos.close();
				System.out.println("Speichert Baum");
				}catch(Exception ex){			
							System.out.println("Kontne nicht gespeichert werden");
					}		
	}
 

Scar47

Aktives Mitglied
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at pMediathek.Baum.vergleiche_mit_name(Baum.java:59)
at pMediathek.GUI.itemStateChanged(GUI.java:665)
at java.awt.List.processItemEvent(Unknown Source)
at java.awt.List.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
steht als Fehlermeldung

Java:
public class Baum extends Film implements Serializable {
	/**
	 * 
	 */
private static final long serialVersionUID = 1565449123321345170L;
	Person inhalt;
	boolean frei;
	Baum links,rechts;
	String hilfstring;
	int hilfzahl;
	public Baum(){
		inhalt=null;
		
		frei=true;
		links=null;
		rechts=null;
	}
	
	public void rein(Person i){
	
		if(frei){
		
			inhalt=i;
			frei=false;
		
		}
		else{
			if(i.getname().equals(inhalt.getname())){
				this.frei=true;
				this.rein(i);
			}else{
				
				if(i.getname().compareTo(inhalt.getname())<0){
					if(links==null)links=new Baum();
					links.rein(i);
			}

				else if(i.getname().compareTo(inhalt.getname())>0){
					if(rechts==null)rechts=new Baum();
					rechts.rein(i);
			}
		}
		}
	}
public void vergleiche_mit_name(String name,TextField txtname,TextField txtalter, TextField txtgeschlecht){
		if(links!=null)links.vergleiche_mit_name(name, txtname, txtalter, txtgeschlecht);
		  //reinschreiben der attribute in die lsite
		if(name.equals(inhalt.getname())){
			  txtname.setText(inhalt.getname());
			  txtalter.setText(inhalt.getalter());
			  txtgeschlecht.setText(inhalt.getgeschlecht());
		}
	    if(rechts!=null)rechts.vergleiche_mit_name(name, txtname, txtalter, txtgeschlecht);
}
 

henpara

Bekanntes Mitglied
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
und da steht auch eig. schon alles drin, was du brauchst um den fehler zu beheben ;)

vielleicht solltest du den zu speichernden Baum einfach in die Methode übergeben, dann kann da eig. nix schiefgehen.
 
S

SlaterB

Gast
@henpara
was ist denn das für ein Tipp, da ist noch nicht viel geklärt..,

----

die Fehlermeldung schreibt 'Zeile 59', der gepostete Code hat aber nur 54 Zeilen, ist es so schwer das zu beachten?
gerne kann man ja imports usw. weglassen, dann möglichst die Fehler-Zeile markieren, extra benennen

woran es scheitert ist bisher noch unklar, die übergebenen Textfelder können null sein,
die eigenen Daten wie Person können null sein, es ist nicht klar ob sie je gefüllt waren, du sagst es zwar aber naja..

GUI-Elemente stören bei dem ganzen Problem zunächst eher,
versuche erstmal ein einfaches normales Programm mit main-Methode:
Java:
main() {
   einen Baum erstellen
   alle Felder testen, vergleichen usw., alles sollte soweit schon funktionieren
   speichern
   laden
   nochmal testen, vergleichen usw.
}
wenn dabei kein Fehler auftritt, dann muss man sich gewiss auch mit den GUI-Anteilen beschäftigen,
viel viel mehr Code und Beschreibungen nötig,
bisher in zwei Antworten gerade drei Wörter richtiger Text, das reicht nicht ;)
 

Scar47

Aktives Mitglied
also, wenn ich den baum ausgebe, ohne das er gespeichert wurde, geht das ohne probleme. wenn ich das programm jetzt speichere und dann schließe, und neu öffne, dann geht es nicht mehr.
-> außerdem: wenn ich das programm dann nochmal schließe (vorher erneut gespeichert) und wieder lade, dann sagt der mir der baum wäre leer
 

Ähnliche Java Themen

Neue Themen


Oben