/**

*

* @功能 添加参数

* @author 创建人 gao_jie

* @date 创建日期 Apr 23, 2009

* @version 1.0

*

*/

public class AddParameter extends Window implements AfterCompose {

private static final long serialVersionUID = 1L;

private int num = 0;// 条件个数

private Window win;// 参数风格

private Rows parameterRows;// 条件行数

private DesignerWnd desiWnd = null;

@SuppressWarnings("unused")

private Spreadsheet spreadSheet;

private InforReport inforreport;

/*

* (non-Javadoc)

*

* @see org.zkoss.zk.ui.ext.AfterCompose#afterCompose()

*/

public void afterCompose() {

parameterRows = (Rows) this.getFellow("parameterRows");

win = (Window) this.getFellow("AddParameter");

desiWnd = (DesignerWnd) Sessions.getCurrent().getAttribute("dWnd");

spreadSheet = (Spreadsheet) desiWnd.getFellow("spreadSheet");

inforreport = spreadSheet.getReport();

this.initiPage(inforreport.getParameters());

}

/**

* 初始化参数页面 获取已定义的参数 现实参数的name,type,defaultValue并可改

*

* @param Parameters

*/

@SuppressWarnings("unchecked")

public void initiPage(Map Parameters) {

parameterRows.getChildren().clear();

if (Parameters != null && !Parameters.isEmpty()) {

// 遍历Parameters的键集

Set parametset = Parameters.keySet();

Iterator ir = parametset.iterator();

while (ir.hasNext()) {

String key = (String) ir.next();

// 获取已有的每一个参数

Parameter parameter = (Parameter) Parameters.get(key);

// 计数器+1

num = num + 1;

// 为每个参数在parameterRows里创建一个Row

Row row = new Row();

row.setId("row_" + num);

row.setParent(parameterRows);

// 每个Row添加一个name,赋值为当前获取参数的name

Textbox name = new Textbox();

name.setId("name_" + num);

name.setWidth("80px");

name.setValue(parameter.getName());

name.setParent(row);

// 每个Row添加一个type,赋值为当前获取参数的type

Listbox type = new Listbox();

type.setParent(row);

type.setId("type_" + num);

type.setMold("select");

type.appendChild(new Listitem("字符串|String", "String"));

type.appendChild(new Listitem("整型|Int", "Int"));

type.appendChild(new Listitem("日期|Date", "Date"));

type.appendChild(new Listitem("长整型|Long", "Long"));

type.appendChild(new Listitem("单精度|Single", "Single"));

type.appendChild(new Listitem("双精度|Double", "Double"));

type.appendChild(new Listitem("货币|Currency", "Currency"));

type.appendChild(new Listitem("字节|Byte", "Byte"));

type.appendChild(new Listitem("布尔|Boolean", "Boolean"));

type.appendChild(new Listitem("时间|Time", "Time"));

type.appendChild(new Listitem("日期时间|Datetime", "Datetime"));

if (parameter.getType().contains("String")) {

type.setSelectedIndex(0);

} else if (parameter.getType().contains("Int")) {

type.setSelectedIndex(1);

} else if (parameter.getType().contains("Date")) {

type.setSelectedIndex(2);

} else if (parameter.getType().contains("Long")) {

type.setSelectedIndex(3);

} else if (parameter.getType().contains("Single")) {

type.setSelectedIndex(4);

} else if (parameter.getType().contains("Double")) {

type.setSelectedIndex(5);

} else if (parameter.getType().contains("Currency")) {

type.setSelectedIndex(6);

} else if (parameter.getType().contains("Byte")) {

type.setSelectedIndex(7);

} else if (parameter.getType().contains("Boolean")) {

type.setSelectedIndex(8);

} else if (parameter.getType().contains("Time")) {

type.setSelectedIndex(9);

} else if (parameter.getType().contains("Datetime")) {

type.setSelectedIndex(10);

} else {

type.setSelectedIndex(0);

}

// 每个Row添加一个defaultValue,赋值为当前获取参数的defaultValue

Textbox defaultValue = new Textbox();

defaultValue.setId("parameter_" + num);

defaultValue.setWidth("80px");

defaultValue.setValue(parameter.getDefaultValue());

defaultValue.setParent(row);

// 每个Row添加一个"删除"按钮,触发删除事件

Button delbtn = new Button();

delbtn.setId("delbtd_" + num);

delbtn.setLabel("删除");

delbtn.addEventListener("onClick", new DelEventListener(num));

delbtn.setParent(row);

}

}

}

/**

* 添加参数

*/

public void addParameter() {

num = num + 1;

// 产生Row

Row row = new Row();

row.setId("row_" + num);

row.setParent(parameterRows);

Textbox name = new Textbox();

name.setId("name_" + num);

name.setWidth("80px");

name.setParent(row);

Listbox type = new Listbox();

type.setParent(row);

type.setId("type_" + num);

type.setMold("select");

type.appendChild(new Listitem("字符串|String", "String"));

type.appendChild(new Listitem("整型|Int", "Int"));

type.appendChild(new Listitem("日期|Date", "Date"));

type.appendChild(new Listitem("长整型|Long", "Long"));

type.appendChild(new Listitem("单精度|Single", "Single"));

type.appendChild(new Listitem("双精度|Double", "Double"));

type.appendChild(new Listitem("货币|Currency", "Currency"));

type.appendChild(new Listitem("字节|Byte", "Byte"));

type.appendChild(new Listitem("布尔|Boolean", "Boolean"));

type.appendChild(new Listitem("时间|Time", "Time"));

type.appendChild(new Listitem("日期时间|Datetime", "Datetime"));

type.setSelectedIndex(0);

Textbox defaultValue = new Textbox();

defaultValue.setId("parameter_" + num);

defaultValue.setWidth("80px");

defaultValue.setParent(row);

Button delbtn = new Button();

delbtn.setId("delbtd_" + num);

delbtn.setLabel("删除");

delbtn.addEventListener("onClick", new DelEventListener(num));

delbtn.setParent(row);

}

/**

*

* @功能 监听事件 "删除参数"

*

*/

public class DelEventListener implements EventListener {

int no;

public DelEventListener(int no) {

this.no = no;

}

@SuppressWarnings("unchecked")

public void onEvent(Event arg0) throws Exception {

// 移除才操作

win.getFellow("row_" + no).detach();

// 改变现有的,该行以后的所有行,上移一位

for (int i = no + 1; i <= num; i++) {

int j = i - 1;

win.getFellow("row_" + i).setId("row_" + j);

win.getFellow("name_" + i).setId("name_" + j);

win.getFellow("type_" + i).setId("type_" + j);

win.getFellow("parameter_" + i).setId("parameter_" + j);

Button bun = (Button) win.getFellow("delbtd_" + i);

Iterator ite = bun.getListenerIterator("onClick");

bun.removeEventListener("onClick", (EventListener) ite.next());

bun.setId("delbtd_" + j);

bun.addEventListener("onClick", new DelEventListener(j));

}

num--;

}

}

/**

* 保存选择

*/

@SuppressWarnings("unchecked")

public void saveParameter() {

Map map = new HashMap();

// 定位到待保存的每一行

for (int i = 1; i <= num; i++) {

// 获取页面的输入值

String name = ((Textbox) this.getFellow("name_" + i)).getValue()

.trim();

String type = (String) ((Listbox) this.getFellow("type_" + i))

.getSelectedItem().getValue();

String defaultValue = ((Textbox) this.getFellow("parameter_" + i))

.getValue();

// 当name不为空且不重复,则把页面获取的数据存入Parameter对象

if (!"".equals(name) && !map.containsKey(name)) {

Parameter tempparameter = new Parameter();

tempparameter.setName(name);

tempparameter.setType(type);

tempparameter.setDefaultValue(defaultValue);

// 再以name为键Parameter对象为值,存入一个Map对象

map.put(name, tempparameter);

} else if (map.containsKey(name)) {

Message.showInfo("第" + i + "行参数名已存在");

return;

} else {

Message.showInfo("第" + i + "行参数名不能为空");

return;

}

}

// 把已存的map作为参数列与report关联,并初始化页面

num = 0;

inforreport.setParameters(map);

this.initiPage(inforreport.getParameters());

Message.showInfo("保存成功!");

}

}

java生成j动态页面_zk动态产生多个页面的例子代码相关推荐

  1. java 生成mysql dto_如何根据动态SQL代码自动生成DTO

    当前的状况 一般做数据库相关开发, 除非学习, 否则很少有人愿意直接使用JDBC.本来Java代码就比较啰嗦了,而直接用JDBC写代码之啰嗦简直有些令人发狂!所以在实际开发过程中,我们通常都会使用一些 ...

  2. java 限制发送频率_java发送短信如何限制发送频率例子代码

    本篇文章主要是详细介绍了java发送短信系列之怎么限制发送频率示例解析,在此为大家介绍一下怎么样限制向同一个用户(根据手机号和ip)发送短信的频率. 1.使用session 要是web程序那在sess ...

  3. 关于用java编写生成word文档,动态添加数据到word文档的一些心得

    关于用java编写生成word文档,动态添加数据到word文档的一些心得,经过翻阅了无数的有用的和无用的资料以后,总算找到了一种靠谱的方法 1.概述 经过反反复复的查阅资料,总算找到了一个靠谱的生成w ...

  4. java jsp转html_JSP页面转换为HTML页面,动态转静态

    前台使用静态页面的好处:没有数据库的交互用户访问网页加载更快,相传搜索引擎会更容易抓取静态网页的内容,所以前台使用静态页面还是有必要的. 转化的流程: 后台servlet中取到需要转换的动态JSP页面 ...

  5. java生成word 带表格_【java】Freemarker 动态生成word(带图片表格)

    1.添加freemarker.jar 到java项目. 2.新建word文档. 3.将文档另存为xml 格式. 4.将xml格式化后打开编辑(最好用notepad,有格式),找到需要替换的内容,将内容 ...

  6. Java读取word模板,并动态生成word

    Java读取word模板,并动态生成word ​ 最近有个需求是将数据库里存入的用户个人信息生成一个word然后供用户下载,第一时间就就想到了poi来做,所以记录一下免得自己忘了,忘了也可以回来看看

  7. java生成word 可变表格_【java】Freemarker 动态生成word(带图片表格)

    1.添加freemarker.jar 到java项目. 2.新建word文档. 3.将文档另存为xml 格式. 4.将xml格式化后打开编辑(最好用notepad,有格式),找到需要替换的内容,将内容 ...

  8. Android开发如何理解Java静态代理 动态代理及动态生成代理对象原理 看这篇就够了

    动态代理与静态代理 前言 代理模式 静态代理 动态代理 JDK代理 动态生成代理对象原理 生成class数据源码 动态代理类真身 总结 前言 近期在研究Hook技术,需要用到动态代理,说到动态代理就会 ...

  9. Java读取pdf模板,并动态生成pdf文件,如动态生成准考证

    Java读取pdf模板,并动态生成pdf文件,如动态生成准考证 ​ 前几天遇到了一个生成准考证的需求,并提供用户下载,然后百度了一圈还是觉得使用itextpdf这个框架好用点.但是还需要找到一个能创建 ...

最新文章

  1. 使用VScode开发ESP32,PlatformIO开发ESP32
  2. URAL 7077 Little Zu Chongzhi's Triangles(14广州I)
  3. 计算两个日期相差几年几个月
  4. 人工智能的时代?未来已至?
  5. java 模板模式_Java模板模式(Template模式)
  6. 表达式目录树(Expression)
  7. 搭建网站常见返回码40X 50X等错误的原因及解决方案
  8. ThreadLocal源码学习
  9. linux的shell命令
  10. 用在线RaxML构建系统发育树
  11. BS架构与CS架构的区别(最详细)
  12. 【HUST】网安|编译原理实验|实验四攻略
  13. hbuilder阻止返回退出的另一种方式
  14. 11年艺术学习“转投”数学,他出版首本TensorFlow中文教材,成为蚂蚁金服技术大军一员...
  15. 彻底掌握NodeJS中如何使用Sequelize
  16. 3D打印机T3升级corexy  制作过程(三)
  17. A16z:为什么 NFT 创作者要选择 cc0?
  18. openoffice安装及使用,linux文件资源下载及windows资源下载
  19. 29个省市,364个门店,新飘柔营销背后,是一场80天的AR狂欢
  20. 数据整合 | 国内外数据整合有什么工具?

热门文章

  1. 民意调查Django实现(一)
  2. Thread.Join()方法的理解
  3. 2007-11-7学习EXT第一天:EXT简介
  4. 如何去除字符串中的 “\n“ ?80% 的同学错了!
  5. 3K和3w的月薪的程序员,差别在哪里?
  6. java压缩文件,中文问题
  7. 想要摆脱手工报表困境?1个工具+5个场景解决80%工作难题
  8. Excel和PPT已经落后了,可视化大屏强在哪?一次看过瘾
  9. 浅谈PHP语音里的流程控制及实现方法
  10. 开源即时通讯软件|最好的开源即时通讯软件——XEIM