如何在JavaFX中保存/加载TableView中的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JavaFX中保存/加载TableView中的数据相关的知识,希望对你有一定的参考价值。

我创建了一个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接口的类启用了类的可序列化。未实现此接口的类将不会将其任何状态序列化或反序列化。

以上是关于如何在JavaFX中保存/加载TableView中的数据的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX - 保存/加载 - 形状/布局

如何在 JavaFx TableView 中添加 TableView 页脚

用于大型数据库表的 JavaFx TableView CRUD

如何将网格线保留在空的 TableView Javafx 中

如何在 JavaFX 中将 CheckBox 添加到 TableView

JavaFX,如何冻结TableView中某些列的位置