すべてのコンポーネントは複製できます。つまり、java.lang.Clonableで実装されています。このため、以下のように、コンポーネントを簡単に複製できます。
<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"> Listbox l = src.clone(); l.setId("dst" + ++cnt); vb.insertBefore(l, self); </attribute> </button> </vbox>
コンポーネントが複製されると、子コンポーネントも複製されます。
複製されたコンポーネントはどのページと親コンポーネントにも属しません。つまり、src.clone().getParent()はnullを返します。
IDは変化しません。つまり、同じIDスペースで使用するなら、IDを変えることを忘れないように。