gpt4 book ai didi

java - 序列化draw2d LayeredPane

转载 作者:行者123 更新时间:2023-12-01 15:07:48 25 4
gpt4 key购买 nike

我需要一些有关draw2d分层 Pane 序列化的帮助。我阅读了有关序列化的内容,发现只有实现了 Serialized 接口(interface)的类才能序列化,并且它的所有字段本身都是可序列化的,或者是 transient 的。

我有一个非常复杂的图表需要序列化,但不知道如何继续?我发现 LayeredPane 类只包含一个 List 类型的字段。无论如何,有人可以帮助我们如何编写递归方法或其他方法来使 LayeredPane 对象可序列化吗?

@mKorbel我所面临的问题的示例场景很难给出,因为它是一个非常大的应用程序的一部分。尽管如此,我还是编造了一个案例,这可能会让您对问题有所了解:

public class Editor extends org.eclipse.ui.part.EditorPart {
org.eclipse.draw2d.FreeformLayer objectsLayer;
org.eclipse.draw2d.ConnectionLayer connectionLayer;
public void createPartControl(Composite parent) {
org.eclipse.draw2d.FigureCanvas canvas = new org.eclipse.draw2d.FigureCanvas(composite);

org.eclipse.draw2d.LayeredPane pane = new org.eclipse.draw2d.LayeredPane();

objectsLayer = new org.eclipse.draw2d.FreeformLayer();
connectionLayer = org.eclipse.draw2d.ConnectionLayer();

pane.add(objectsLayer);
pane.add(connectionLayer);

canvas.setContents(pane);

addFigures();
addConnections();
}

private void addFigures() {
// Adds Objects, i.e., org.eclipse.draw2d.Figure Objects, to the objectLayer
// which turn contains, 1 or more org.eclipse.draw2d.Panel Objects,
// with variable number of org.eclipse.draw2d.Label objects
}

private void addConnections() {
// Adds org.eclipse.draw2d.PolylineConnection objects to the connectionLayer
// between objects in the objectLayer
}
}

最佳答案

您必须扩展 LayeredPane 类,通过实现该接口(interface)使其可序列化,并提供从模型重建该 LayeredPane 的整个结构和属性的方法。

public class SerializableLayeredPanne extends LayeredPanne implements Serializable {

private static final long serialVersionUID = 1L;

/**
* the model you are able to FULLY restore layered pane and all its children from,
* it MUST be serializable
*/
private final Serializable model;

SerializableLayeredPanne(Serializable model) {
this.model = model;
}

public void init() {
// set font, color etc.
// add children
}

private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
init();
}

}

因此,您必须添加一个可序列化模型,其中包含从头开始构建图形树所需的所有信息。

关于java - 序列化draw2d LayeredPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12747050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com