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

10guest74.122.121.1042nu2eqeJun 21, 2016 9:50:28 AMlink

resources

index.zulzul<vlayout apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('demo.chart.other.ChartsVM')"> <chart id="chart" width="520" height="300" fgAlpha="255" paneColor="#ffffff" model="@bind(vm.model)" type="@bind(vm.type)" threeD="@bind(vm.threeD)" onClick="@command('showMessage',msg=event.areaComponent.tooltiptext)" engine="@bind(vm.engine)"/> <hlayout visible="@bind(not empty vm.message)"> You clicked on :<label value="@bind(vm.message)"/> </hlayout> </vlayout>ChartsVM.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.zkex.zul.impl.JFreeChartEngine; import org.zkoss.zul.ChartModel;       public class ChartsVM {           boolean threeD;     ChartModel model;     String type;           String message;           ChartsEngine engine;           @Init     public void init() {         type = "wind";         threeD = false;         model = ChartData.getModel(type);         engine = new ChartsEngine();     }           public String getType() {         return type;     }       public String getMessage(){         return message;     }           public boolean isThreeD() {         return threeD;     }       public ChartModel getModel() {         return model;     } public JFreeChartEngine getEngine() { return engine; } @Command("showMessage") @NotifyChange("message") public void onShowMessage( @BindingParam("msg") String message){ this.message = message; } @GlobalCommand("configChanged") @NotifyChange({"threeD","model","type"}) public void onConfigChanged( @BindingParam("threeD") boolean threeD, @BindingParam("type") String type){ this.threeD = threeD; this.type = type; this.model = ChartData.getModel(type); } }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; import org.apache.commons.lang.StringUtils; public class ChartColors { //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 StringUtils.leftPad(Integer.toHexString(color.getRGB() & 0xFFFFFF), 6, '0'); } }ChartData.javajavaimport org.zkoss.zul.CategoryModel; import org.zkoss.zul.ChartModel; import org.zkoss.zul.PieModel; import org.zkoss.zul.SimpleCategoryModel; import org.zkoss.zul.SimplePieModel; import org.zkoss.zul.SimpleXYModel; import org.zkoss.zul.SimpleXYZModel; import org.zkoss.zul.XYModel; import org.zkoss.zul.XYZModel; public class ChartData { // type to model map static HashMap<String,ChartModel> models = new HashMap<String,ChartModel>(); static { int year = Calendar.getInstance().get(Calendar.YEAR) + 1900; // Wind Model XYZModel windmodel = new SimpleXYZModel(); // series, date, direction (0-12), force(0-12) windmodel.addValue("Wind!", new Long(date(1, 3).getTime()), new Double(0d), new Double(10.0)); windmodel.addValue("Wind!", new Long(date(1, 4).getTime()), new Double(1d), new Double(8.5)); windmodel.addValue("Wind!", new Long(date(1, 5).getTime()), new Double(2.0), new Double(10.0)); windmodel.addValue("Wind!", new Long(date(1, 6).getTime()), new Double(3.0), new Double(10.0)); windmodel.addValue("Wind!", new Long(date(1, 7).getTime()), new Double(4.0), new Double(7.0)); windmodel.addValue("Wind!", new Long(date(1, 8).getTime()), new Double(5.0), new Double(10.0)); windmodel.addValue("Wind!", new Long(date(1, 9).getTime()), new Double(6.0), new Double(8.0)); windmodel.addValue("Wind!", new Long(date(1, 10).getTime()), new Double(7.0), new Double(11.0)); windmodel.addValue("Wind!", new Long(date(1, 11).getTime()), new Double(8.0), new Double(10.0)); windmodel.addValue("Wind!", new Long(date(1, 12).getTime()), new Double(9.0), new Double(11.0)); windmodel.addValue("Wind!", new Long(date(1, 13).getTime()), new Double(10.0), new Double(3.0)); windmodel.addValue("Wind!", new Long(date(1, 14).getTime()), new Double(11.0), new Double(9.0)); windmodel.addValue("Wind!", new Long(date(1, 15).getTime()), new Double(12.0), new Double(11.0)); windmodel.addValue("Wind!", new Long(date(1, 16).getTime()), new Double(0.0), new Double(0.0)); models.put("wind", windmodel); PieModel piemodel = new SimplePieModel(); piemodel.setValue("C/C++", new Double(21.2)); piemodel.setValue("VB", new Double(10.2)); piemodel.setValue("Java", new Double(40.4)); piemodel.setValue("PHP", new Double(28.2)); models.put("ring", piemodel); // XY Model XYModel xymodel = new SimpleXYModel(); xymodel.addValue(year - 1 + "", new Integer(20), new Integer(120)); xymodel.addValue(year - 1 + "", new Integer(40), new Integer(135)); xymodel.addValue(year - 1 + "", new Integer(60), new Integer(140)); xymodel.addValue(year - 1 + "", new Integer(80), new Integer(160)); xymodel.addValue(year + "", new Integer(30), new Integer(120)); xymodel.addValue(year + "", new Integer(50), new Integer(135)); xymodel.addValue(year + "", new Integer(70), new Integer(140)); xymodel.addValue(year + "", new Integer(90), new Integer(160)); models.put("scatter", xymodel); models.put("area", xymodel); models.put("step_area", xymodel); models.put("stacked_area", xymodel); models.put("histogram", xymodel); /* Category Model */ CategoryModel categorymodel = new SimpleCategoryModel(); categorymodel.setValue(year - 1 + "", "Q1", new Integer(20)); categorymodel.setValue(year - 1 + "", "Q2", new Integer(35)); categorymodel.setValue(year - 1 + "", "Q3", new Integer(40)); categorymodel.setValue(year - 1 + "", "Q4", new Integer(55)); categorymodel.setValue(year + "", "Q1", new Integer(40)); categorymodel.setValue(year + "", "Q2", new Integer(60)); categorymodel.setValue(year + "", "Q3", new Integer(70)); categorymodel.setValue(year + "", "Q4", new Integer(90)); models.put("stacked_bar", categorymodel); models.put("stacked_area", categorymodel); } public static ChartModel getModel(String type){ return models.get(type); } private static Date date(int month, int day) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH, month - 1); calendar.set(Calendar.DAY_OF_MONTH, day); return calendar.getTime(); } }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; } }