第一种情况:从某张表中获取字段,动态加载Listbox。即Listbox中的内容为该字段下内容,可随表格变化动态变化。
Java代码:
//初始化Listbox
private void initListbox() {
//HQL语言,从类User对应的t_user表中获取字段name,即从用户表中查找用户类型为VIP的用户记录
String hql = "from User where type='VIP'";
//用userService中的getInfos方法获取记录的集合,用List存储
List<User> users = userService.getInfos(hql);
List<String> strs = new ArrayList<String>();
if(users!=null &&users.size()>0){
for (User user : users) {//遍历users,即查找出的记录
strs.add(users.getName());//将用户名存入List<String>
}
}
myListbox.setModel(new ListModelList(strs));//将获取的所有名字都存入Listbox
// 设置默认显示内容
for (int i = 0; i < strs.size(); i++) {
Listitem li = new Listitem(strs.get(i));//为每个名字都声明一个Listitem
li.setParent(myListbox);
if (test.getUserName() == null) {//当前类的实例test
if (i == 0) {// 若当前状态为新增,设置默认显示值为第一个用户
myListbox.setSelectedItem(li);//设置显示下标为0的用户
}
} else {// 若当前状态为修改
if (test.getUserName().equals(strs.get(i))) {
myListbox.setSelectedItem(li);//设置显示test的用户名
}
}
}
}
第二种情况:在ZK中对Listbox声明并定义完全,不可以在Java代码中对显示的内容的条目数或内容进行修改。
ZK代码:
<listbox id="typeList" mold="select" width="185px" height="25px"
style="float:left;margin-left:5px;margin-top:0px">
<listitem value="门诊" label="门诊" selected="true" />
<listitem value="住院" label="住院" />
</listbox>
Java代码:
//初始化typeList
private void setType() {
List<Listitem> items= typeList.getItems();//获取typeList中所有Listitem,存入List<Listitem>
for(Listitem item:items){//遍历List<Listitem>,即typeList中所有条目
if(dept.getType().toString().equals(item.getValue().toString())){//若当前类的实例dept中的type字段的内容与条目中某个值相同
typeList.setSelectedItem(item);//设置该相同项为当前显示项
}//若不相同,则默认显示控件中设置的“门诊”
}
}
1.mold="select“,listbox模式为选择。
2.width="185px",listbox宽度为185px。
3.height="25px",listbox高度为25px。
4.style="float:left;margin-left:5px;margin-top:0px",listbox风格为左对齐,外边框距离左边控件外边框5px,外边框距离上方控件外边框0px。
5.value="门诊",listitem属性为门诊。
6.label="门诊",listitem显示内容为门诊。
7.selected="true",listitem默认显示“门诊”。