Suggested case list:
Using timer to refresh a grid
383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlinkuser model to move item to another listbox
120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlinkDisabled list item row passed to VM-1981
296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlinkDisabled list item row passed to VM-1981
295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlinkDisabled list item row passed to VM-1981
294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlinkgrid sample with ListModel/RowRenderer
816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlinkgrid sample with ListModel/RowRenderer
809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlinkgrid sample with ListModel/RowRenderer
196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlinkgrid sample with ListModel/RowRenderer
195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlinkgrid sample with ListModel/RowRenderer
194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlinkgrid sample with ListModel/RowRenderer
193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlinkgrid sample with ListModel/RowRenderer
192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlinkgrid sample with ListModel/RowRenderer
191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlinkHierarchy table without using ZK PE/EE
1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlinkgrid sample with ListModel/RowRenderer
128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlinkuser model to move item to another listbox
1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlinkUsing timer to refresh a grid
1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlinkFire a event from child iframe
1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlinkTextbox input restriction sample
1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlinkTest web core taglib in ZUL
1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlinkLatest 10 Fiddles :
constraint binding textbox
3guest172.68.151.16220peldaDec 5, 2025 5:08:19 PMlinkAnother new ZK fiddle
2guest172.68.151.16320peldaDec 5, 2025 5:07:51 PMlinkAnother new ZK fiddle
1guest172.68.151.16220peldaDec 5, 2025 5:07:32 PMlinkAnother new ZK fiddle
1peggypeng172.71.154.99364f4neDec 5, 2025 9:24:31 AMlinktooltip example
2guest104.22.23.13rc1ntoDec 4, 2025 2:23:45 PMlinkAnother new ZK fiddle
1guest172.69.134.2277t7602Dec 4, 2025 1:40:46 PMlinkAnother new ZK fiddle
1peggypeng104.22.17.1802df6e3oDec 4, 2025 8:41:29 AMlinkonClose
1peggypeng172.68.87.248j8kd8aDec 3, 2025 4:10:26 AMlinkAnother new ZK fiddle
1peggypeng172.69.134.2271rm7f4eNov 26, 2025 3:31:24 AMlinkZK-5912-Suggestion
2rebeccalai104.22.20.1442qrmiiuNov 26, 2025 2:07:15 AMlinkFrozen Tabs
6guest220.135.202.14037998l0Jul 1, 2013 9:14:49 AMlinkresources
index.zulzul<zk xmlns:w="client">
frozen: <intbox id="ibx" value="2" />
<button label="change">
<attribute name="onClick"><![CDATA[
tbs.setFrozen(ibx.getValue());
]]></attribute>
</button>
<div />
<button label="change orient">
<attribute name="onClick"><![CDATA[
if ("vertical".equals(tbx.getOrient())) {
tbx.setOrient("horizontal");
} else {
tbx.setOrient("vertical");
}
]]></attribute>
</button>
<div />
<button label="add tab">
<attribute name="onClick"><![CDATA[
tbs.insertBefore(new Tab("added tab"), tbs.getFirstChild());
]]></attribute>
</button>
<button label="remove tab">
<attribute name="onClick"><![CDATA[
tbs.getFirstChild().setParent(null);
]]></attribute>
</button>
<borderlayout>
<north size="20%" />
<south size="20%" />
<west size="20%" />
<east size="20%" />
<center>
<tabbox id="tbx" width="250px" height="150px">
<tabs id="tbs" use="pkg$.FrozenTabs" frozen="2">
<attribute w:name="_scrollcheck"><![CDATA[
function (way, tb) {
this.$_scrollcheck(way, tb);
if (way == 'vsel'
|| way == 'sel') {
if (this.$n())
this.fixFrozen();
}
}
]]></attribute>
<attribute w:name="setFrozen"><![CDATA[
function (v) {
if (v != this._frozen) {
this._frozen = v;
if (this.$n())
this.fixFrozen();
}
}
]]></attribute>
<attribute w:name="bind_"><![CDATA[
function (a, b, c) {
this.$bind_(a, b, c);
var oldAdded = this.onChildAdded_,
oldRemoved = this.onChildRemoved_,
wgt = this;
this.onChildAdded_ = function () {
oldAdded.apply(wgt, arguments);
if (wgt.$n())
wgt.fixFrozen();
};
this.onChildRemoved_ = function (child) {
oldRemoved.apply(wgt, arguments);
if (wgt.$n())
wgt.fixFrozen();
};
setTimeout (function () {
wgt.fixFrozen();
}, 0);
}
]]></attribute>
<attribute w:name="fixFrozen"><![CDATA[
function () {
var tabbox = this.getTabbox();
if (tabbox._mold == 'accordion')
return;
var frozen = this._frozen,
n = this.$n(),
$n = jq(n),
old = $n.find('.z-tabs-fakefrozen')[0];
if (old) n.removeChild(old);
if (frozen) {
var cave = this.$n('cave'),
children = cave.childNodes,
len = children.length;
if (len >= frozen) {
var copyN = $n.clone()[0],
$copyN = jq(copyN),
copyHeader = $copyN.find('.z-tabs-header')[0]
|| $copyN.find('.z-tabs-ver-header')[0],
copyCave = $copyN.find('.z-tabs-cnt')[0]
|| $copyN.find('.z-tabs-ver-cnt')[0],
child = copyN.childNodes[0],
vertical = tabbox._orient == 'vertical',
size = 0,
tmp;
while (child) {
tmp = child.nextSibling;
if (child != copyHeader)
copyN.removeChild(child);
child = tmp;
}
child = copyCave.childNodes[frozen];
while (child) {
tmp = child.nextSibling;
copyCave.removeChild(child);
child = tmp;
}
child = cave.childNodes[0];
tmp = cave.childNodes[frozen];
while (child) {
if (child.style.display != 'none')
size += vertical?
jq(child).outerHeight(true) : jq(child).outerWidth(true);
child = child.nextSibling;
if (child == tmp)
break;
}
copyN.id = '';
$copyN.addClass('z-tabs-fakefrozen').css({
'position': 'absolute',
'left': '0px',
'top': '0px',
'border-bottom': '1px solid white'
});
if (vertical)
$copyN.css('height', size+20 + 'px');
else
$copyN.css('width', size+25 + 'px');
n.appendChild(copyN);
}
}
}
]]></attribute>
<attribute name="onCreate"><![CDATA[
Tab tab= new Tab("disable");
tab.setParent(self);
tab.setVisible(false);
new Tab("tab 1").setParent(self);
new Tab("tab 2").setParent(self);
new Tab("tab 3").setParent(self);
new Tab("tab 4 long").setParent(self);
new Tab("tab 5 long").setParent(self);
new Tab("tab 6 long long long").setParent(self);
new Tab("tab 7").setParent(self);
]]></attribute>
</tabs>
<tabpanels>
<tabpanel visible="false">tabpanel 0</tabpanel>
<tabpanel>tabpanel 1</tabpanel>
<tabpanel>tabpanel 2</tabpanel>
<tabpanel>tabpanel 3</tabpanel>
<tabpanel>tabpanel 4</tabpanel>
<tabpanel>tabpanel 5</tabpanel>
<tabpanel>tabpanel 6</tabpanel>
<tabpanel>tabpanel 7</tabpanel>
</tabpanels>
</tabbox>
</center>
</borderlayout>
</zk>FrozenTabs.javajavaimport org.zkoss.zul.Tabs;
public class FrozenTabs extends Tabs {
private static final long serialVersionUID = -5439094036809527719L;
private Integer _frozen = 0;
public void setFrozen (Integer frozen) {
if (frozen == null || frozen < 0) {
frozen = 0;
}
if (_frozen != frozen) {
_frozen = frozen;
smartUpdate("frozen", _frozen);
}
}
public Integer getFrozen () {
return _frozen;
}
protected void renderProperties(org.zkoss.zk.ui.sys.ContentRenderer renderer)
throws java.io.IOException {
super.renderProperties(renderer);
if (_frozen != 0) {
renderer.render("frozen", _frozen);
}
}
}