ich versuche gerade eine JList zu bauen. Mein Problem, wir arbeiten mit JDK 6 und die Person-Objekte werden in Objects umgewandelt. JList ruft Object#toString auf statt die toString-Methode von den Person-Objekten.
package jrunner;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.PrintWriter;importjava.io.Serializable;importjava.util.ArrayList;importjava.util.Observable;importjava.util.Observer;publicclassPersonextendsJRunnerObjectimplementsObserver,Cloneable,Serializable{privatestaticfinallong serialVersionUID =1L;privateString name;privateint age;privateint height;privatedouble weight;privateboolean female;privateboolean male;privateExportPersonData export;{
name ="";
age =0;
height =0;
weight =0.0;
female =false;
male =false;}//Constructor is private. It is not possible//to create Person instances. Only through the //factory method.privatePerson(ExportPersonData e){
export =newExportPersonObject();}privatevoidwriteObject(java.io.ObjectOutputStream out)throwsIOException{}privatevoidreadObject(java.io.ObjectInputStream in)throwsIOException,ClassNotFoundException{}//Setters and Getters for all fields.publicStringgetName(){returnthis.name;}publicintgetAge(){returnthis.age;}publicintgetHeight(){returnthis.height;}publicdoublegetWeight(){returnthis.weight;}publicbooleangetFemale(){returnthis.female;}publicbooleangetMale(){returnthis.male;}publicvoidsetName(String n){this.name = n;}publicvoidsetAge(int a){this.age = a;}publicvoidsetHeight(int h){this.height = h;}publicvoidsetWeight(double w){this.weight = w;}publicvoidsetFemaleTrue(){this.male =false;this.female =true;}publicvoidsetMaleTrue(){this.female =false;this.male =true;}publicstaticPersongetPersonInstance(ExportPersonData export){returnnewPerson(export);}@OverridepublicStringtoString(){return name;}//The update Method is implemented through java.util.Observer//It listens to an Observable class. When the Observer is finished//with an action it activates the update method.publicvoidupdate(Observable arg,Object obj){PersonGUI in =(PersonGUI) arg;// Import all person variables from PersonGUI// to the Person object.this.setName(in.getName());this.setAge(in.getAge());this.setHeight(in.getHeight());this.setWeight(in.getWeight());if(in.isFemale()){this.setFemaleTrue();}else{if(in.isMale()){this.setMaleTrue();}}Person personData;try{
personData =(Person)(this.clone());
export.exportPersonData(personData);}catch(CloneNotSupportedException e){e.printStackTrace();}}publicstaticvoidmain(String[] args){Person p =Person.getPersonInstance(newExportPersonObject());
p.setName("Philipp");System.out.println(p.toString());}}
Mein Fehler beim Übertragen: im Code steht eh listModel.addElement(p);
Das ListDemo funktioniert problemlos!
Ich habe nun versucht in der toString Methode einfach irgendeinen String zurückzugeben. Da wird die Liste angezeigt.
Das Problem liegt anscheinend bei Person oder eigentlich dem Import von Person.
Die Objekte werden erkannt - die dazugehörigen Felder leider nicht. Der Fehler muss wohl in den Methoden