すべてのコンポーネントは直列化(serialize)できます。つまり、コンポーネントを直列化してメモリまたはほかのレジスターに送ることができます。
そして、後に直列化復元をします。複製のように、直列化復元したコンポーネントは他のページ(デスクトップ)に属しません。直列化したものにも依存し ません。
下に示したように、直列化は複製機能を実装する時にも使えます。
<vbox id="vb"> <listbox id="src" multiple="true" width="200px"> <listhead> <listheader label="Population"/> <listheader align="right" label="%"/> </listhead> <listitem value="A"> <listcell label="A. Graduate"/> <listcell label="20%"/> </listitem> <listitem value="B"> <listcell label="B. College"/> <listcell label="23%"/> </listitem> <listitem value="C"> <listcell label="C. High School"/> <listcell label="40%"/> </listitem> </listbox> <zscript> int cnt = 0; </zscript> <button label="Clone"> <attribute name="onClick"> import java.io.*; ByteArrayOutputStream boa = new ByteArrayOutputStream(); new ObjectOutputStream(boa).writeObject(src); Listbox l = new ObjectInputStream( new ByteArrayInputStream(boa.toByteArray())).readObject(); l.setId("dst" + ++cnt); vb.insertBefore(l, self); </attribute> </button> </vbox>
もちろん、cloneメソッドで複製するのはよりよいパフォーマンスがあります。一方、直列化は異なったマシーン間でも使えます。