簡體   English   中英

如何在JavaFX中從TableView保存/加載數據

[英]How to Save/Load data from TableView in JavaFX

我創建了一個TableView,它允許用戶向表中輸入信息。 我遇到的問題是,我需要保存用戶提供的信息,並在下次運行該程序時使用相同的信息重新加載相同的表。 我在這個問題上停留了一段時間,如果有人可以幫忙,我將不勝感激。 下面是我的ObservableList和我嘗試過的方法。 我將包括一張表格的屏幕截圖。 我從用戶按下按鈕時就調用了這些方法。

//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

Stats是否實現java.io.Serializable? 從ObjectOutputStream的API文檔中:

只有支持java.io.Serializable接口的對象才能寫入流。

從關於Serializable的文檔中:

通過實現java.io.Serializable接口的類,可以啟用類的可序列化性。 未實現此接口的類將不會對其狀態進行序列化或反序列化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM