Processing...

Suggested case list:

Using timer to refresh a grid

383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlink

user model to move item to another listbox

120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlink

Disabled list item row passed to VM-1981

296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlink

Disabled list item row passed to VM-1981

295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlink

Disabled list item row passed to VM-1981

294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlink

grid sample with ListModel/RowRenderer

816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlink

grid sample with ListModel/RowRenderer

809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlink

grid sample with ListModel/RowRenderer

196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlink

grid sample with ListModel/RowRenderer

195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlink

grid sample with ListModel/RowRenderer

194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlink

grid sample with ListModel/RowRenderer

193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlink

grid sample with ListModel/RowRenderer

192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlink

grid sample with ListModel/RowRenderer

191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlink

Hierarchy table without using ZK PE/EE

1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlink

grid sample with ListModel/RowRenderer

128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlink

user model to move item to another listbox

1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlink

Using timer to refresh a grid

1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlink

Fire a event from child iframe

1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlink

Textbox input restriction sample

1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlink

Test web core taglib in ZUL

1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlink

Latest 10 Fiddles :

constraint binding textbox

3guest172.68.151.16220peldaDec 5, 2025 5:08:19 PMlink

Another new ZK fiddle

2guest172.68.151.16320peldaDec 5, 2025 5:07:51 PMlink

Another new ZK fiddle

1guest172.68.151.16220peldaDec 5, 2025 5:07:32 PMlink

Another new ZK fiddle

1peggypeng172.71.154.99364f4neDec 5, 2025 9:24:31 AMlink

tooltip example

2guest104.22.23.13rc1ntoDec 4, 2025 2:23:45 PMlink

Another new ZK fiddle

1guest172.69.134.2277t7602Dec 4, 2025 1:40:46 PMlink

Another new ZK fiddle

1peggypeng104.22.17.1802df6e3oDec 4, 2025 8:41:29 AMlink

onClose

1peggypeng172.68.87.248j8kd8aDec 3, 2025 4:10:26 AMlink

Another new ZK fiddle

1peggypeng172.69.134.2271rm7f4eNov 26, 2025 3:31:24 AMlink

ZK-5912-Suggestion

2rebeccalai104.22.20.1442qrmiiuNov 26, 2025 2:07:15 AMlink

ZK Charts in ZK Tab tabpanel

42guest103.40.48.2422nu2eqeDec 6, 2019 5:35:25 AMlink

resources

index.zulzul<zk> <window border="normal" title="hello" apply="pkg$.TestComposer"> <tabbox width="800px" height="600px"> <tabs> <tab label="Tab 1" hflex="1"/> <tab label="Tab 2" hflex="1"/> <tab label="Tab 3" hflex="1"/> </tabs> <tabpanels> <tabpanel style="color:#336699;"> <vlayout apply="org.zkoss.bind.BindComposer" viewModel="@id('vm1') @init('pkg$.PieChartVM')"> <chart id="mychart1" title="Pie Chart Demo" width="550" height="400" paneColor="#ffffff" fgAlpha="192" type="pie" threeD="@bind(vm1.threeD)" model="@bind(vm1.model)" engine="@bind(vm1.engine)" onClick="@command('showMessage',msg=event.areaComponent.tooltiptext)"/> <hlayout visible="@bind(not empty vm1.message)"> You clicked on :<label value="@bind(vm1.message)"/> </hlayout> </vlayout> </tabpanel> <tabpanel style="color:#333399;"> <vlayout apply="org.zkoss.bind.BindComposer" viewModel="@id('vm2') @init('pkg$.PieChartVM')"> <chart id="mychart" title="Pie Chart Demo" width="100" height="200" paneColor="#ffffff" fgAlpha="192" type="pie" threeD="@bind(vm2.threeD)" model="@bind(vm2.model)" engine="@bind(vm2.engine)" onClick="@command('showMessage',msg=event.areaComponent.tooltiptext)"/> <hlayout visible="@bind(not empty vm2.message)"> You clicked on :<label value="@bind(vm2.message)"/> </hlayout> </vlayout> </tabpanel> <tabpanel style="color:#663366;"> <vlayout apply="org.zkoss.bind.BindComposer" viewModel="@id('vm3') @init('pkg$.PieChartVM')"> <chart id="mychart3" title="Pie Chart Demo" width="550" height="400" paneColor="#ffffff" fgAlpha="192" type="pie" threeD="@bind(vm3.threeD)" model="@bind(vm3.model)" engine="@bind(vm3.engine)" onClick="@command('showMessage',msg=event.areaComponent.tooltiptext)"/> <hlayout visible="@bind(not empty vm3.message)"> You clicked on :<label value="@bind(vm3.message)"/> </hlayout> </vlayout> </tabpanel> </tabpanels> </tabbox> </window> </zk> TestComposer.javajavaimport org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.*; import org.zkoss.zk.ui.ext.*; import org.zkoss.zk.au.*; import org.zkoss.zk.au.out.*; import org.zkoss.zul.*; public class TestComposer extends GenericForwardComposer{ public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); } public void onClick$btn(Event e) throws InterruptedException{ Messagebox.show("Hi btn"); } } PieChartVM.javajavaimport org.zkoss.bind.annotation.BindingParam; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.GlobalCommand; import org.zkoss.bind.annotation.Init; import org.zkoss.bind.annotation.NotifyChange; import org.zkoss.zul.PieModel; public class PieChartVM { PieChartEngine engine; PieModel model; boolean threeD = false; String message; @Init public void init() { // prepare chart data engine = new PieChartEngine(); model = PieChartData.getModel(); } public PieChartEngine getEngine() { return engine; } public PieModel getModel() { return model; } public boolean isThreeD() { return threeD; } public String getMessage(){ return message; } @Command("showMessage") @NotifyChange("message") public void onShowMessage( @BindingParam("msg") String message){ this.message = message; } @GlobalCommand("dataChanged") @NotifyChange("model") public void onDataChanged( @BindingParam("category")String category, @BindingParam("num") Number num){ model.setValue(category, num); } @GlobalCommand("configChanged") @NotifyChange({"threeD","engine"}) public void onConfigChanged( @BindingParam("threeD") boolean threeD, @BindingParam("exploded") boolean exploded){ this.threeD = threeD; engine.setExplode(exploded); } }PieChartEngine.javajavaimport java.awt.Color; import java.awt.Paint; import java.awt.Shape; import java.awt.Stroke; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.DefaultDrawingSupplier; import org.jfree.chart.plot.PiePlot; import org.zkoss.zkex.zul.impl.JFreeChartEngine; import org.zkoss.zul.Chart; /* * you are able to do many advanced chart customization by extending ChartEngine */ public class PieChartEngine extends JFreeChartEngine { private boolean explode = false; public boolean prepareJFreeChart(JFreeChart jfchart, Chart chart) { jfchart.setBackgroundPaint(Color.white); PiePlot piePlot = (PiePlot) jfchart.getPlot(); piePlot.setLabelBackgroundPaint(ChartColors.COLOR_4); //override some default colors Paint[] colors = new Paint[] {ChartColors.COLOR_1, ChartColors.COLOR_2, ChartColors.COLOR_3, ChartColors.COLOR_4}; DefaultDrawingSupplier defaults = new DefaultDrawingSupplier(); piePlot.setDrawingSupplier(new DefaultDrawingSupplier(colors, new Paint[]{defaults.getNextFillPaint()}, new Paint[]{defaults.getNextOutlinePaint()}, new Stroke[]{defaults.getNextStroke()}, new Stroke[] {defaults.getNextOutlineStroke()}, new Shape[] {defaults.getNextShape()})); piePlot.setShadowPaint(null); piePlot.setSectionOutlinesVisible(false); piePlot.setExplodePercent("Java", explode ? 0.2 : 0); return false; } public void setExplode(boolean explode) { this.explode = explode; } }ChartColors.javajavaimport java.awt.Color; public class ChartColors { private static final int PAD_LIMIT = 8192; //main colors public static Color COLOR_1 = new Color(0x3E454C); public static Color COLOR_2 = new Color(0x2185C5); public static Color COLOR_3 = new Color(0x7ECEFD); public static Color COLOR_4 = new Color(0xFFF6E5); public static Color COLOR_5 = new Color(0xFF7F66); //additional colors public static Color COLOR_6 = new Color(0x98D9FF); public static Color COLOR_7 = new Color(0x4689B1); public static Color COLOR_8 = new Color(0xB17C35); public static Color COLOR_9 = new Color(0xFDC77E); public static String toHtmlColor(Color color) { return "#" + toHexColor(color); } public static String toHexColor(Color color) { return leftPad(Integer.toHexString(color.getRGB() & 0xFFFFFF), 6, '0'); } public static String leftPad(String str, int size, char padChar) { if (str == null) { return null; } int pads = size - str.length(); if (pads <= 0) { return str; // returns original String when possible } if (pads > PAD_LIMIT) { return leftPad(str, size, String.valueOf(padChar)); } return padding(pads, padChar).concat(str); } private static String padding(int repeat, char padChar) throws IndexOutOfBoundsException { if (repeat < 0) { throw new IndexOutOfBoundsException("Cannot pad a negative amount: " + repeat); } final char[] buf = new char[repeat]; for (int i = 0; i < buf.length; i++) { buf[i] = padChar; } return new String(buf); } public static String leftPad(String str, int size, String padStr) { if (str == null) { return null; } if (isEmpty(padStr)) { padStr = " "; } int padLen = padStr.length(); int strLen = str.length(); int pads = size - strLen; if (pads <= 0) { return str; // returns original String when possible } if (padLen == 1 && pads <= PAD_LIMIT) { return leftPad(str, size, padStr.charAt(0)); } if (pads == padLen) { return padStr.concat(str); } else if (pads < padLen) { return padStr.substring(0, pads).concat(str); } else { char[] padding = new char[pads]; char[] padChars = padStr.toCharArray(); for (int i = 0; i < pads; i++) { padding[i] = padChars[i % padLen]; } return new String(padding).concat(str); } } public static boolean isEmpty(String str) { return str == null || str.length() == 0; } } PieChartData.javajavaimport org.zkoss.zul.PieModel; import org.zkoss.zul.SimplePieModel; public class PieChartData { public static PieModel getModel(){ PieModel model = new SimplePieModel(); model.setValue("C#", new Double(21.2)); model.setValue("VB", new Double(10.2)); model.setValue("Java", new Double(40.4)); model.setValue("PHP", new Double(28.2)); return model; } }PieChartConfigVM.javajavapublic class PieChartConfigVM { double value1 = 22.1D; double value2 = 10.2D; double value3 = 40.4D; double value4 = 28.2D; public double getValue1() { return value1; } public void setValue1(double value1) { this.value1 = value1; } public double getValue2() { return value2; } public void setValue2(double value2) { this.value2 = value2; } public double getValue3() { return value3; } public void setValue3(double value3) { this.value3 = value3; } public double getValue4() { return value4; } public void setValue4(double value4) { this.value4 = value4; } }