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 AMlinkChart does not work vflex
8guest178.169.93.1332c3jt57Nov 24, 2014 8:57:42 PMlinkresources
index.zulzul<zk>
<window id="winLab1" apply="pkg$.controller.CtrIndex" >
<html>
<br />
<br />
</html>
<hbox hflex="1">
<vlayout hflex="min">
<label value="Исходные данные:"/>
<hbox>
<grid width="200px">
<rows>
<row><label value="Первый класс"/></row>
<row>M11: <textbox id="tbM11" width="100px"/></row>
<row>M12: <textbox id="tbM12" width="100px"/></row>
<row>D11: <textbox id="tbD11" width="100px"/></row>
<row>D12: <textbox id="tbD12" width="100px"/></row>
<row>P1: <textbox id="tbP1" width="100px"/></row>
<row>N: <textbox id="tbN" width="100px"/></row>
</rows>
</grid>
<grid width="200px">
<rows>
<row><label value="Второй класс"/></row>
<row>M21: <textbox id="tbM21" width="100px"/></row>
<row>M22: <textbox id="tbM22" width="100px"/></row>
<row>D21: <textbox id="tbD21" width="100px"/></row>
<row>D22: <textbox id="tbD22" width="100px"/></row>
<row>P2: <label id="lP2" width="100px"/></row>
<row>K: <textbox id="tbK" width="100px"/></row>
</rows>
</grid>
</hbox>
</vlayout>
<vbox hflex="min">
<html>
<br/>
</html>
<button id = "btnCalc" />
</vbox>
<vlayout hflex="min">
<label value="Классификатор:" />
<hbox>
<grid width="200px">
<rows>
<row><label value="Первый класс"/></row>
<row>^M11: <label id="leM11" width="100px"/></row>
<row>^M12: <label id="leM12" width="100px"/></row>
<row>^D11: <label id="leD11" width="100px"/></row>
<row>^D12: <label id="leD12" width="100px"/></row>
<row>n1: <label id="lN1" width="100px"/></row>
<row>^P1: <label id="leP1" width="100px"/></row>
<row>^Pош1: <label id="lePE1" width="100px"/></row>
<row>^Pош: <label id="lePE" width="100px"/></row>
</rows>
</grid>
<grid width="200px">
<rows>
<row><label value="Второй класс"/></row>
<row>^M21: <label id="leM21" width="100px"/></row>
<row>^M22: <label id="leM22" width="100px"/></row>
<row>^D21: <label id="leD21" width="100px"/></row>
<row>^D22: <label id="leD22" width="100px"/></row>
<row>n2: <label id="lN2" width="100px"/></row>
<row>^P2: <label id="leP2" width="100px"/></row>
<row>^Pош2: <label id="lePE2" width="100px"/></row>
</rows>
</grid>
</hbox>
</vlayout>
</hbox>
<hbox>
<button id="chart1" />
<button id="chart2" />
<button id="chart3" />
<button id="chart4" />
<chart id="chart" />
</hbox>
</window>
</zk>CtrIndex.javajava
import java.util.Random;
import org.zkoss.zk.ui.Component;
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.zul.Button;
import org.zkoss.zul.Chart;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;
public class CtrIndex extends SelectorComposer<Component>{
@Wire
Textbox tbM11;
@Wire
Textbox tbM12;
@Wire
Textbox tbD11;
@Wire
Textbox tbD12;
@Wire
Textbox tbM21;
@Wire
Textbox tbM22;
@Wire
Textbox tbD21;
@Wire
Textbox tbD22;
@Wire
Label leM11;
@Wire
Label leM12;
@Wire
Label leD11;
@Wire
Label leD12;
@Wire
Label lN1;
@Wire
Label leP1;
@Wire
Label lePE1;
@Wire
Label lePE;
@Wire
Label leM21;
@Wire
Label leM22;
@Wire
Label leD21;
@Wire
Label leD22;
@Wire
Label lN2;
@Wire
Label leP2;
@Wire
Label lePE2;
@Wire
Textbox tbP1;
@Wire
Textbox tbN;
@Wire
Textbox tbK;
@Wire
Label lP2;
@Wire
Button btnCalc;
@Wire
Chart chart;
@Wire
Button chart1;
@Wire
Button chart2;
@Wire
Button chart3;
@Wire
Button chart4;
Random rnd = new Random();
Integer n1, n2, N, K;
Double m11, m12, m21, m22, d11, d12, d21, d22, P1, P2;
Double e_m11, e_m12, e_m21, e_m22, e_d11, e_d12, e_d21, e_d22, e_p1, e_p2, e_p1_err, e_p2_err, e_p_err;
double[] x1;
double[] y1;
double[] x2;
double[] y2;
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
btnCalc.setVisible(true);
btnCalc.setLabel("Вычилить");
chart1.setVisible(true);
chart1.setLabel("Pош(N)");
chart2.setVisible(true);
chart2.setLabel("Pош(D11-D21)");
chart3.setVisible(true);
chart3.setLabel("Pош(P1)");
chart4.setVisible(true);
chart4.setLabel("Pош(m21-m11)");
setConstParameters();
}
public void setConstParameters(){
tbM11.setValue("10");
tbM12.setValue("10");
tbD11.setValue("2");
tbD12.setValue("2");
tbM21.setValue("15");
tbM22.setValue("15");
tbD21.setValue("3");
tbD22.setValue("3");
tbP1.setValue("0.5");
tbN.setValue("500");
double forLp2 = 1 - Double.parseDouble(tbP1.getValue());
lP2.setValue(String.valueOf(forLp2));
tbK.setValue("96");
}
public void getData(){
N = Integer.parseInt(tbN.getValue());
P1 = Double.parseDouble(tbP1.getValue());
P2 = Double.parseDouble(lP2.getValue());
K = Integer.parseInt(tbK.getValue());
m11 = Double.parseDouble(tbM11.getValue());
m12 = Double.parseDouble(tbM12.getValue());
m21 = Double.parseDouble(tbM21.getValue());
m22 = Double.parseDouble(tbM22.getValue());
d11 = Double.parseDouble(tbD11.getValue());
d12 = Double.parseDouble(tbD12.getValue());
d21 = Double.parseDouble(tbD21.getValue());
d22 = Double.parseDouble(tbD22.getValue());
}
public void setParameters(){
N = Integer.parseInt(tbN.getValue());
K = Integer.parseInt(tbK.getValue());
m11 = Double.parseDouble(tbM11.getValue());
m12 = Double.parseDouble(tbM12.getValue());
m21 = Double.parseDouble(tbM21.getValue());
m22 = Double.parseDouble(tbM22.getValue());
d11 = Double.parseDouble(tbD11.getValue());
d12 = Double.parseDouble(tbD12.getValue());
d21 = Double.parseDouble(tbD21.getValue());
d22 = Double.parseDouble(tbD22.getValue());
P1 = Double.parseDouble(tbP1.getValue());
P2 = Double.parseDouble(lP2.getValue());
}
public void randomSample(){
n1 = 0;
n2 = 0;
for(int i = 0; i < N; ++i){
if(rnd.nextDouble() < P1){
n1++;
}else{
n2++;
}
}
}
/***
*
* @param m = мат ожидание
* @param d = дисперсия
* @return temp = информационный признак, распределенный по нормальному закону распределения.
*/
public double normalDistribution(double m, double d){
double temp = 0;
double x = 0;
for(int i = 0; i <= K; ++i){
x = x + (rnd.nextDouble() - 0.5);
}
temp = Math.sqrt(12*d/K)*x + m;
return temp;
}
/***
* @return estimate varience = оценка дисперсии
*/
public double estimate_V(double[] x, int n , double m){
double e_v = 0;
for(int i = 0; i < n; ++i){
e_v = e_v + Math.pow((x[i]-m), 2);
}
e_v = e_v/(n-1);
return e_v;
}
/***
*
* @return estimate_e = оценку мат ожидании
*/
public double estimate_E(double[] x, int n){
double e_e = 0;
for(int i = 0; i < n; ++i){
e_e = e_e + x[i];
}
e_e = e_e/n;
return e_e;
}
/***
*
* @return количество ошибок классификатора
*/
public Integer probabilityOfError(int size, int id, double [] arr1, double[] arr2, double em11, double em12, double em21, double em22, double ed11,
double ed12, double ed21, double ed22, double ep1, double ep2){
Integer n_error = 0;
double nu = 0, f1 = 0, f2 = 0;
for(int i = 0; i < size; ++i){
f1 = ep1/(2*Math.PI*Math.sqrt(ed11*ed12)*Math.exp(-0.5*(Math.pow((arr1[i]-em11), 2)/ed11 + Math.pow((arr2[i]-em12), 2)/ed12)));
f2 = ep2/(2*Math.PI*Math.sqrt(ed21*ed22)*Math.exp(-0.5*(Math.pow((arr1[i]-em21), 2)/ed21 + Math.pow((arr2[i]-em22), 2)/ed22)));
nu = f1 - f2;
if(id==1&&nu>0){
n_error++;
}
if(id==2&&nu<0){
n_error++;
}
}
System.out.println("n_error" + n_error);
return n_error;
}
@Listen("onClick = #btnCalc")
public void calc(){
setParameters();
randomSample();
x1 = new double[n1];
x2 = new double[n1];
y1 = new double[n2];
y2 = new double[n2];
for(int i = 0; i < n1; ++i){
x1[i] = normalDistribution(m11, d11);
x2[i] = normalDistribution(m12, d12);
}
for(int i = 0; i < n2; ++i){
y1[i] = normalDistribution(m21, d21);
y2[i] = normalDistribution(m22, d22);
}
lN1.setValue(String.valueOf(n1));
lN2.setValue(String.valueOf(n2));
e_p1 = (double)n1/(double)N;
e_p2 = (double)n2/(double)N;
leP1.setValue(String.valueOf(e_p1));
leP2.setValue(String.valueOf(e_p2));
e_m11 = estimate_E(x1, n1);
e_m12 = estimate_E(x2, n1);
e_m21 = estimate_E(y1, n2);
e_m22 = estimate_E(y2, n2);
leM11.setValue(String.valueOf(String.format("%.2f", e_m11)));
leM12.setValue(String.valueOf(String.format("%.2f", e_m12)));
leM21.setValue(String.valueOf(String.format("%.2f", e_m21)));
leM22.setValue(String.valueOf(String.format("%.2f", e_m22)));
e_d11 = estimate_V(x1, n1, estimate_E(x1, n1));
e_d12 = estimate_V(x2, n1, estimate_E(x2, n1));
e_d21 = estimate_V(y1, n2, estimate_E(y1, n2));
e_d22 = estimate_V(y2, n2, estimate_E(y2, n2));
leD11.setValue(String.valueOf(String.format("%.2f", e_d11)));
leD12.setValue(String.valueOf(String.format("%.2f", e_d12)));
leD21.setValue(String.valueOf(String.format("%.2f", e_d21)));
leD22.setValue(String.valueOf(String.format("%.2f", e_d22)));
e_p1_err = (double)probabilityOfError(n1, 1, x1, x2, e_m11, e_m12, e_m21, e_m22, e_d11, e_d12, e_d21, e_d22, e_p1, e_p2)/(double)n1;
e_p2_err = (double)probabilityOfError(n2, 2, y1, y2, e_m11, e_m12, e_m21, e_m22, e_d11, e_d12, e_d21, e_d22, e_p1, e_p2)/(double)n2;
e_p_err = e_p1_err + e_p2_err;
lePE1.setValue(String.valueOf(String.format("%.2f", e_p1_err)));
lePE2.setValue(String.valueOf(String.format("%.2f", e_p2_err)));
lePE.setValue(String.valueOf(String.format("%.2f", e_p_err)));
}
public void setChart(){
Title title = new Title();
title.setText("Первая лабораторная работа №1");
title.setX(200);
title.setY(400);
chart.setTitle(title);
}
}