2017-12-23 11 views
0

Ich habe ein TableView erstellt, mit dem der Benutzer Informationen in die Tabelle eingeben kann. Das Problem, das ich habe, ist, dass ich die Informationen speichern muss, die der Benutzer zur Verfügung gestellt hat, und die gleiche Tabelle mit denselben Informationen neu laden, wenn das Programm das nächste Mal ausgeführt wird. Ich bin seit einiger Zeit daran fest, wenn jemand helfen kann, würde ich es sehr schätzen. UNTEN ist meine ObservableList und die Methoden, die ich ausprobiert habe. Ich werde eine Bildschirmaufnahme von dem, was die Tabelle aussieht, einschließen. Ich rief die Methoden von Button Pushs an, die der Benutzer machen würde.So speichern/laden Sie Daten aus TableView in JavaFX

//get Trail info 
public static ObservableList<Stats> getTrailInfo(){ 
    ObservableList<Stats> trailInfo = FXCollections.observableArrayList(); 
    trailInfo.add(new Stats(trailList, timesHiked, daysHiked, hoursHiked, minutesHiked, milesHiked)); 

    return trailInfo; 
} 


//I ATTEMPTED TO SAVE AND READ IT BACK USING THESE METHODS, BUT I DID NOT HAVE ANY LUCK 
private static void write(ObservableList<Stats> stats) { 
    try { 

     // write object to file 
     OutputStream out = new FileOutputStream("TrailName.txt");   
     ObjectOutputStream oos = new ObjectOutputStream(out); 
     oos.writeObject(new ArrayList<Stats>(stats)); 
     oos.close(); 


    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 

static ObservableList<Stats> pull() { 
    try { 
     InputStream inputstream = new FileInputStream("TrailName.txt");   
     ObjectInputStream ois = new ObjectInputStream(inputstream); 
     List<Stats> list = (List<Stats>) ois.readObject() ; 

     return FXCollections.observableList(list); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return FXCollections.emptyObservableList(); 
} 
[TableView ScreenShot][1] 


[1]: https://i.stack.imgur.com/m0nyg.png 

Antwort

0

Does Stats java.io.Serializable implementieren? Aus den API-Dokumenten von ObjectOutputStream:

Nur Objekte, die die java.io.Serializable-Schnittstelle unterstützen, können in Streams geschrieben werden.

Aus der Dokumentation auf Serializable:

Serialisierbarkeit einer Klasse von der Klasse aktiviert wird, um die java.io.Serializable Schnittstelle implementiert. Für Klassen, die diese Schnittstelle nicht implementieren, wird der Status nicht serialisiert oder deserialisiert.

+0

Ich bin mir nicht sicher, ob es serialisierbar TBH sein sollte. Ich habe mehrere Dinge ausprobiert und sie haben nicht funktioniert, das war das letzte, was ich an einem anderen Beispiel versuchte. Aus welchen Gründen auch immer kann ich online keine Beispiele finden, wie man das Tableview und seine Daten speichert und dann neu lädt. – user8284691