Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Try this:</p> <p>zul</p> <pre><code>&lt;zk&gt; &lt;div apply="test.TestComposer"&gt; &lt;tabbox&gt; &lt;tabs id="tbs" /&gt; &lt;tabpanels id="tps" /&gt; &lt;/tabbox&gt; &lt;button id="btn" label="add tab" /&gt; &lt;/div&gt; &lt;/zk&gt; </code></pre> <p>TestComposer.java</p> <pre><code>package test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.select.SelectorComposer; import org.zkoss.zk.ui.select.annotation.Listen; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zk.ui.util.Clients; import org.zkoss.zul.Button; import org.zkoss.zul.Label; import org.zkoss.zul.Tab; import org.zkoss.zul.Tabpanel; import org.zkoss.zul.Tabpanels; import org.zkoss.zul.Tabs; /** * Tested with ZK 6.0.2 and ZK Pivottable 2.0.0 * */ @SuppressWarnings("rawtypes") public class TestComposer extends SelectorComposer { @Wire Button btn; @Wire Tabs tbs; @Wire Tabpanels tps; List tabs = new ArrayList(); int limit = 3; @Listen("onClick = #btn") public void onClick$btn () { if (tabs.size() &lt; limit) { Tab tab = new Tab("Tab " + (tabs.size()+1)); tab.setParent(tbs); tabs.add(tab); Tabpanel tp = new Tabpanel(); new Label("Tabpanel " + tabs.size()).setParent(tp); tp.setParent(tps); if (tabs.size() == limit) { tab.setSelected(true); overrideBehavior(); } } } public void overrideBehavior () { final Tab toSel = (Tab)tabs.get(tabs.size()-1); for (int i = 0; i &lt; tabs.size() - 1; i++) { final Tab tab = (Tab)tabs.get(i); tab.addEventListener( // add an EventListener "onClick", // listen to onClick event new EventListener () { // create an EventListener instance to add public void onEvent (Event event) { // the method will be called while onClick event triggered Clients.evalJavaScript("zk.log('"+tab+" clicked')"); toSel.setSelected(true); // make sure the third one is selected at server side } } ); tab.setWidgetOverride("_sel", "function(notify, init) {return;}"); // prevent select at client side } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload