java / swing:形状问题:序列化和组合

时间:2010-03-18 14:11:27

标签: java swing graphics shape

我有两个关于java.awt.Shape的问题。假设我有两个Shape s,shape1shape2

  1. 如何以某种方式对它们进行序列化,以便将信息保存到文件中,然后在另一台计算机上重新创建? (Shape不是Serializable但它确实有getPathIterator()方法,似乎你可以获取信息,但它会有点拖累+我不知道如何重建之后是Shape个对象。)

  2. 如何将它们组合成一个新的形状,以便它们形成一个联合边界? (例如,如果shape1是一个大正方形而shape2是正方形内的一个小圆圈,我希望组合形状是一个带有小圆孔的大正方形)

2 个答案:

答案 0 :(得分:2)

我相信您可以使用Shape从路径信息重建java.awt.geom.Path2D.Double。但是,它可能没有特定实现那么有效。

要在所有具有Shape字段的类中没有特殊工作的情况下可以序列化,那么您需要确保所提供的Shape的所有构造形状的可序列化子类,以初始化数据一个readObject方法。如果有需要将数据发送到构造函数的情况,那么您将需要“串行代理”(在这种情况下我不认为这是必要的)。

序列化基础模型数据可能更好。 Shape通常是短暂构建的。

答案 1 :(得分:0)

我想我找到了问题第二部分的答案:

Shape shape1, shape2;
shape1 = ...;
shape2 = ...;
Area area = new Area(shape1);
area.subtract(new Area(shape2));
// "area" is now a Shape that is the difference between the two shapes.