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

22guest213.215.227.1012nu2eqeMay 25, 2018 1:31:35 PMlink

resources

index.zulzul<?xml version="1.0" encoding="UTF-8"?> <window apply="pkg$.TestComposer"> <charts id="chart" type="bar" title="Population pyramid for Germany, midyear 2010" subtitle="Source: www.census.gov"/> </window>TestComposer.javajava import org.zkoss.chart.Charts; import org.zkoss.chart.XAxis; import org.zkoss.chart.YAxis; import org.zkoss.json.JavaScriptValue; import org.zkoss.zk.ui.select.SelectorComposer; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zul.Window; public class TestComposer extends SelectorComposer<Window> { @Wire Charts chart; public void doAfterCompose(Window comp) throws Exception { super.doAfterCompose(comp); chart.setModel(BarNegativeStackData.getCategoryModel()); chart.getXAxis().setReversed(false); chart.getXAxis().getLabels().setStep(1); // mirror axis on right side XAxis minorAxis = chart.getXAxis(1); minorAxis.setOpposite(true); minorAxis.setReversed(false); minorAxis.setLinkedTo(0); minorAxis.getLabels().setStep(1); minorAxis.setCategories(BarNegativeStackData.getCategories()); YAxis yAxis = chart.getYAxis(); yAxis.setTitle(""); yAxis.getLabels().setFormatter(new JavaScriptValue("function() {return Math.abs(this.value)/1000000 + 'M';}")); yAxis.setMin(-4000000); yAxis.setMax(4000000); chart.getPlotOptions().getSeries().setStacking("normal"); chart.getTooltip().setFormatter(new JavaScriptValue("function() {return '<b>' + this.series.name + ', age ' + this.point.category + '</b><br/>' + 'Population: ' + Highcharts.numberFormat(Math.abs(this.point.y), 0);}")); } }Model.javajavaimport org.zkoss.chart.model.CategoryModel; import org.zkoss.chart.model.DefaultCategoryModel; public class BarNegativeStackData { private static CategoryModel model; static { model = new DefaultCategoryModel(); model.setValue("Male", "0-4", -1746181); model.setValue("Male", "5-9", -1884428); model.setValue("Male", "10-14", -2089758); model.setValue("Male", "15-19", -2222362); model.setValue("Male", "20-24", -2537431); model.setValue("Male", "25-29", -2507081); model.setValue("Male", "30-34", -2443179); model.setValue("Male", "35-39", -2664537); model.setValue("Male", "40-44", -3556505); model.setValue("Male", "45-49", -3680231); model.setValue("Male", "50-54", -3143062); model.setValue("Male", "55-59", -2721122); model.setValue("Male", "60-64", -2229181); model.setValue("Male", "65-69", -2227768); model.setValue("Male", "70-74", -2176300); model.setValue("Male", "75-79", -1329968); model.setValue("Male", "80-84", -836804); model.setValue("Male", "85-89", -354784); model.setValue("Male", "90-94", -90569); model.setValue("Male", "95-99", -28367); model.setValue("Male", "100 +", -3878); model.setValue("Female", "0-4", 1656154); model.setValue("Female", "5-9", 1787564); model.setValue("Female", "10-14", 1981671); model.setValue("Female", "15-19", 2108575); model.setValue("Female", "20-24", 2403438); model.setValue("Female", "25-29", 2366003); model.setValue("Female", "30-34", 2301402); model.setValue("Female", "35-39", 2519874); model.setValue("Female", "40-44", 3360596); model.setValue("Female", "45-49", 3493473); model.setValue("Female", "50-54", 3050775); model.setValue("Female", "55-59", 2759560); model.setValue("Female", "60-64", 2304444); model.setValue("Female", "65-69", 2426504); model.setValue("Female", "70-74", 2568938); model.setValue("Female", "75-79", 1785638); model.setValue("Female", "80-84", 1447162); model.setValue("Female", "85-89", 1005011); model.setValue("Female", "90-94", 330870); model.setValue("Female", "95-99", 130632); model.setValue("Female", "100 +", 21208); } public static CategoryModel getCategoryModel() { return model; } public static String[] getCategories() { return model.getCategories().toArray(new String[0]); } }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; } }