所有的组件都是可克隆的。换言之,它们都实现了java.lang.Cloneable
接口。因此,复制组件是很简单的,如下。
<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>
一旦组件被克隆了,所有它的子组件也都会被克隆(all its children and descendants)。
被克隆的组件并不属于任何页面和父组件。换言之,src.clone().getParent()
会返回null。
ID并未改变,若你想将被克隆的组件添加回相同的ID空间,要记住更改ID。