ZUMLページで作られるコンポーネントの記述に加え、開発者は手動でそれらを作ることもできます。すべてのコンポーネントのクラスはしっかり出来ています。直接[15] コンストラクターを使って作成することもできます。
<window id="main"> <button label="Add Item"> <attribute name="onClick"> new Label("Added at "+new Date()).setParent(main); new Separator().setParent(main); </attribute> </button> <separator bar="true"/> </window>
コンポーネントが手動で作られたとき、自動的にページに付け加えられることはありません。つまり、ユーザーのブラウザには現れません。ページにそれを追加するため、setParent ・ appendChild ・ insertBeforeを使い、親とそれをつなげます。そうすれば親がページの一部であれば、そのコンポーネントもページの一部になります。
コンポーネントを削除したり、クローズしたりする方法はありません[16]。コンポーネントがページから離れるとすぐに、ブラウザからも離れてしまいます。ページにつけられるとすぐに表示されます。
<window id="main"> <zscript>Component detached = null;</zscript> <button id="btn" label="Detach"> <attribute name="onClick"> if(detached != null) { detached.setParent(main); detached = null; btn.label = "Detach"; } else { (detached = target).setParent(null); btn.label = "Attach"; } </attribute> </button> <separator bar="true"/> <label id="target" value="You see this if it is attached."/> </window>
上の例では、setVisible方法を使えば同じような効果があります。しかしながら、setVisible(false)はブラウザからコンポーネントを取り除きません。ただ、コンポーネント(とすべての子ページ)を見えなくします。
コンポーネントがページから離れると、使っていた(使わなくなった)メモリーはJVMのガーベージコレクタによって開放されます。