当前位置: 首页 > 面试题库 >

序列化JavaFX组件

邹学民
2023-03-14
问题内容

我正在尝试在Java
FX下开发一个拖放应用程序。用户将在某些位置放置JFX组件,例如按钮,菜单,标签。完成后,他将保存此布局,稍后再重新打开该布局,然后将再次使用它。

重要的是存储有关放置在某个位置的所有对象的信息。

我决定为此目的使用序列化。但是我无法序列化JavaFX组件。我试图序列化Buttons,Scenes,Stages,JFXPane,但似乎没有任何效果(我获得了NotSerializableException)。

有什么建议如何保存所有组件然后检索它们?

PS:我试图用FXML找出某种方法,但没有成功。

非常感谢您的回答:)


问题答案:

如果将用户组件保存在服务器端的主要目的是-可以向用户显示相同的界面-为什么不保存您需要的有关用户组件的所有描述性信息,以及何时需要-
只需重建用户界面再次使用存储的描述性信息?这是原始示例:

/* That is the class for storing information, which you need from your components*/
 public class DropedComponentsCoordinates implements Serializable{
private String componentID;
private String x_coord;
private String y_coord;
//and so on, whatever you need to get from yor serializable objects;
//getters and setters are assumed but not typed here.
 }

 /* I assume a variant with using FXML. If you don't - the main idea does not change*/
 public class YourController implements Initializable {

List<DropedComponentsCoordinates> dropedComponentsCoordinates;

@Override
public void initialize(URL url, ResourceBundle rb) {
    dropedComponentsCoordinates = new ArrayList();
}

//This function will be fired, every time 
//a user has dropped a component on the place he/she wants
public void OnDropFired(ActionEvent event) {
    try {
        //getting the info we need from components
        String componentID = getComponentID(event);
        String component_xCoord = getComponent_xCoord(event);
        String component_yCoord = getComponent_yCoord(event);

        //putting this info to the list
        DropedComponentsCoordinates dcc = new DropedComponentsCoordinates();
        dcc.setX_Coord(component_xCoord);
        dcc.setY_Coord(component_yCoord);
        dcc.setComponentID(componentID);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

private String getComponentID(ActionEvent event){
    String componentID;
    /*getting cpmponentID*/
    return componentID;
}
private String getComponent_xCoord(ActionEvent event){
    String component_xCoord;
    /*getting component_xCoord*/
    return component_xCoord;
}
private String getComponent_yCoord(ActionEvent event){
    String component_yCoord;
    /*getting component_yCoord*/
    return component_yCoord;
}
}


 类似资料:
  • 是否有任何方法可以序列化javafx.scene.image.image? 我只找到了一个方法:创建自己的可序列化类,它以像素格式存储图像数据(字节[])。我不敢相信JavaFX没有内置的图像序列化机制。 这是我的SerializableImage类。

  • 问题内容: 现在我想知道你们是否可以帮助我将ArrayList序列化到文件上。现在我正在从学校进行总结,但是我没有真正的编码问题。我正在制作的是GUI通讯录,当用户添加地址时,它会存储到arraylist中并添加到comboBox中。那就是我在做什么。我要问的是您是否可以序列化Arraylist。如果可以的话,你们能教我怎么做吗?或者至少给我一些教程? 非常感谢。如果你们需要在回答之前先看代码,请

  • 问题内容: 为什么Swing 类要实现该接口?我实现视图的方式是无状态的,所有状态数据都存储在Presentation Model中。因此,我不需要序列化我的视图。我使用了注释来删除警告。是否有删除它们的更好方法? 问题答案: 最初,GUI构建器将以序列化格式保存UI。该标签甚至有从序列化形式负载的属性(我不知道还有谁使用了这一点,我只用它来是恶意的)。不幸的是,对GUI使用序列化机制实际上是行不

  • 问题内容: 我在流程之前有这个: 然后在另一部分 为什么我收到ClassCastException? 问题答案: 最终我以这种方式工作:

  • 问题内容: 我正在尝试使用symfony序列化程序组件反序列化具有关系的实体。这是我的实体: 和 流派实体 : 现在在我的 控制器操作中, 我正在尝试以下操作: 还有我的 json数据 : 但是我得到了下一个 错误 : 给定类型为“ AppBundle \ Entity \ Genre”,“ array”的预期参数(500内部服务器错误) 是否可以使用内部具有关系的实体反序列化json请求? 感谢

  • 情况:我希望使用ObjectOutputStream将一组对象(不同类型)从客户端发送到服务器。 问题:对象数组不可序列化(我得到一个not serializable异常)。 我尝试了什么:我创建了一个扩展Object并实现Serializable的虚拟类。但是我不能将原始对象数组强制转换为此类。 是否有任何方法可以序列化对象数组?