我正在尝试在 Java FX 下开发一个小的拖放应用程序。用户会将按钮、菜单、标签等 JFX 组件放置在特定位置。完成后,他将保存此布局,稍后他将重新打开该布局并再次使用它。
重要的是存储所有掉落在某个位置的对象的信息。
为此,我决定使用序列化。但我无法序列化 JavaFX 组件。我尝试序列化 Buttons、Scenes、Stages、JFXPane,但似乎没有任何效果(我获得了 NotSerializableException)。
关于如何保存所有组件然后检索它们有什么建议吗?
P.S.:我试图用 FXML 找出一些方法,但我没有成功。
非常感谢您的回答:)
最佳答案
你是对的,JavaFX(从 2.1 开始)不支持使用 Java 序列化组件 Serializable接口(interface) - 所以你不能使用那个机制。
JavaFX 可以使用 FXMLLoader.load() 从 FXML 文档反序列化方法。
不过,诀窍在于如何将现有组件和状态写入 FXML?
目前,执行 FXML 序列化的平台没有公开任何内容。显然,创建通用场景图 => FXML 序列化程序是一项相当复杂的任务(据我所知,没有公共(public)的第 3 方 API)。迭代场景图并为一组有限的组件和属性写出 FXML 不会太困难。
关于java - 序列化 JavaFX 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11033943/