java / swing: вопросы формы: сериализация и объединение - PullRequest
1 голос
/ 18 марта 2010

У меня есть два вопроса о java.awt.Shape. Предположим, у меня есть два Shape s, shape1 и shape2.

  1. Как я могу каким-то образом их сериализовать, чтобы я мог сохранить информацию в файл, а затем воссоздать ее на другом компьютере? (Shape - это не Serializable, но у него есть метод getPathIterator(), который выглядит так, как будто вы можете получить информацию, но это было бы своего рода перетаскиванием + Я не уверен, как впоследствии восстановить объект Shape .)

  2. Как я могу объединить их в новую форму, чтобы они образовали общую границу? (например, если shape1 - большой квадрат, а shape2 - маленький круг внутри квадрата, я хочу, чтобы комбинированная форма была большим квадратом с небольшим круглым отверстием)

Ответы [ 2 ]

2 голосов
/ 18 марта 2010

Я полагаю, что вы можете восстановить Shape из информации о пути с помощью java.awt.geom.Path2D.Double. Однако это может быть не так эффективно, как конкретные реализации.

Чтобы быть сериализуемым без специальной работы со всеми классами, имеющими Shape в качестве поля, вам необходимо убедиться, что все построенные формы сериализуемые подклассы предоставленных Shape s, которые инициализируют данные в readObject метод. Если есть случаи, когда вам нужно отправить данные в конструктор, вам понадобятся «последовательные прокси» (я не думаю, что это необходимо в этом случае).

Возможно, лучше сериализовать базовые данные модели. Shape s, как правило, создаются кратковременно.

0 голосов
/ 18 марта 2010

Мне кажется, я разобрался с ответом на 2 часть моего вопроса:

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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...