`
2277259257
  • 浏览: 518608 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ZK----集锦

 
阅读更多

<listbox id="carListbox" emptyMessage="No car found in the result" height="160px" style="margin-top:10px">
        <listhead>                                                 ---表头
            <listheader label="Model" />                 ---表头列名
            <listheader label="Make" />
            <listheader label="Price" width="20%"/>
        </listhead>
        <template name="model">                      ---数据源
            <listitem>                                             ---数据项(行)
                <listcell label="${each.model}"></listcell>   
                <listcell label="${each.make}"></listcell>
                <listcell>$<label value="${each.price}" /></listcell>
            </listitem>
        </template>
</listbox>
    <hbox style="margin-top:20px" id="detailBox" visible="false">
        <image id="previewImage" style="padding:10px" />
        <vbox>
            <hlayout>
                Model : <label id="modelLabel" style="font-weight:bold"/>
            </hlayout>
            <hlayout>
                Make : <label id="makeLabel" style="font-weight:bold"/>
            </hlayout>
            <hlayout>
                Price :
                <span>$<label id="priceLabel" style="font-weight:bold"/></span>
            </hlayout>
            <label id="descriptionLabel" />
        </vbox>
    </hbox>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

页面与java代码的关联:

方法一:

监听所关心的事件,然后调用合适的方法进行处理。例如:可调用onCreate初始化、onOk处理、onCancel取消事件

 <window  id="main"  onCreate="MyManager.init(main)"  onOk="MyManager.process(main)"  onCancel="MyManager.cancel(main)"/>
必须有一个名为MyManager的java类,内容如下:
public class MyManager{
   public  static  void  init(Window main){ }
   public  static  void  save(Window main){ }
   public  static  void  cancel(Window main){   }
}

方法二:

不在ZUML页面嵌入java代码,可以继承一个组件的实现来处理事件

public class MyManager  extends  Window{
   public  static  void  init(Window main){ }
   public  static  void  save(Window main){ }
   public  static  void  cancel(Window main){   }
}
然后使用use属性指定类,如下:
<window  use="MyManager"></window>

方法三:

若使用MVC模式,不想再window(视图)内嵌入处理代码,可以实现一个类来初始化window,此类必须实现org.zkoss.zk.ui.util.Composer接口
public  class  MyManager  implements  Composer{
   public  void  doAfterCompose(Component comp){
 ((Windos)comp).setTitle("my Title");
 ...你要初始化的东西
 comp是一个窗口
   }
}
然后使用apply属性指定类,如下:
<window  apply="MyManager"></window>

 

window仍然作为org.zkoss.zul.Window的一个实例被创建,且作为comp参数被传递给doAfterCompose方法,然后,你可以处理你所希望的初始化

若想apply多个composer使用逗号隔开,可以使用EL表达式来返回类,它的名称,Composer实例,或Composer实例集合

<window  apply="MyManagerMyManager2">"/>

         <textbox  apply="${c:mycomposer()}"/>

</window>

 

组件的获取、添加:

组件添加到一个页面的方法:

1、调用setPage--将组件指定为一个页面的根组件

2、调用setParentinsertBeforeappendChild----将组件定义为另外一个的子组件,那么属于同一页面的子组件将会属于父组件所属的页面

页面组建获取:

每个组件都有一个标识,可利用getId方法获得

任何组件可形成一个ID空间,必须实现了org.zkoss.zk.ui.IdSpace接口

相同ID空间内的组件称为fellows,getFellow方法可被同一ID空间内的任何组件调用,同一空间内的任何组件调用getSpaceOwner方法返回的是同样的对象

 

数据源和页面组件间的数据关联:

数据源 <=====数据绑定管理器=====>组件

(只要告诉数据绑定管理器和数据源的联系,数据绑定管理器会自动完成加载)

第一步:页面声明数据源(或后台java类中声明数据源)

<zscript> 

   Person  p= new Person();

   p.setName("king");

</zscript>

第二步:页面顶部初始化数据绑定管理器

<? init  class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"  ?>

第三步:将UI组件关联至数据源

只需要定义UI对象,并关联数据源:使用ZUML注释表达式来告诉数据绑定管理器数据源和UI组件的关系

<component-name   attribute-name="@{bean-name.attribute-name}"/>

component-name:组件名

bean-name:数据源

attribute-name:描述UI组件或数据源的一个属性

<textbox  value="@{p.name}"/>

 

 控制组件加载数据源的时机:

<component-name   attribute-name="@{bean-name.attribute-name , load-when='component-id.event-name'}"/>

component-id:UI组件的ID

bean-name:事件名称

例如:一个人的姓或名字改变后,全名也跟着改变

<textbox  id="firstName" value="@{person.firstName}"/>

<textbox  id="lastName" value="@{person.lastName}"/>

<textbox  id="fullName" value="@{person.fullName , load-when='firstName.onChange , lastName.onChange'}"/>

  控制组件保存数据到数据源的时机:

<component-name   attribute-name="@{bean-name.attribute-name , save-when='component-id.event-name'}"/>

例如:一个人的姓或名字改变后,

<textbox  id="firstName" value="@{person.firstName , save-when='self.onChange'}"/>

<textbox  id="lastName" value="@{person.lastName , save-when='self.onChange'}"/>

<textbox  id="fullName" value="@{person.fullName}"/>

 一个数据源关联多个组件:

 

集合数据源和组件的关联:

支持集合的UI组件有:Listbox、Grid、Tree

第一步:定义集合数据源 

第二步:将集合和UI组件的model属性相关联

第三步:定义一个UI组件模版

    1、使用self属性定义一个想要的变量,用来呈现集合内的每个实例

        <component-name  self="@{each='variable-name'}"/>

    2、将UI组件和变量关联

        <component-name  attribute-name="@{variable-name.attribute-name}"/>

例如:

List  persons;

 

<listbox  id=""  model="@{persons}">

   <listhead>

       <listheader  label=""  />

   </listhead>

   <listitem  self="@{each='person'}">

        <listcell>  <textbox  value="@{person.name}"/>   </listcell>

   </listitem>

数据源和UI组件的定制转换:

如果数据源是一个bolean值,为true时,我让页面的组件显示为一幅图,为false时显示为另一个(即不让显示true或false)

<component-name  attribute-name="@{bean-name.attribute-name , converter='class-name'}"/> 

   step1、定义实现了TypeConverter的转换类,并实现下面的方法:

               1)、coerceToUI,将一个值对象转换成UI组件属性类型

               2)、coerceToBean,将一个值对象转换成bean属性类型

   step2、在converter标签表达式内指定转换器的类名

定义数据绑定管理的访问权限:

<component-name  attribute-name="@{bean-name.attribute-name , access='type-name'}"/> 

attribute-name 的模式为both(加载/保存),load(仅加载),save(仅保存),none(都不可)

 

 

 

MVC模式的类形式:

public class SearchController extends SelectorComposer<Component> {   }

 

组建添加监听器方法:

第一种: 通过在标记语言中指定onXxx属性,属性值为任何java代码

              <listitem  onSelected="showDetail()">

                public void showDetail(){}

         

              <button  label=”ok”  onClick=” MyManager .save()”/>

              public class MyManager  extends  Window{
                       public  void  save(){ } 
              }

 

第二种: 为监听的组件或页面调用addEventListener方法

             <listitem>

               @Listen("onSelect = #carListbox") //carListbox:<listbox id="carListbox">

       public void showDetail(){ }
             Comp.addEventListener(“onClick” , new MyListener());
             Class  MyListener  implements  org.zkoss.zk.ui.event.EventListener{
                      Public  void  onEvent(Event event)  throws UiException {   }
             }
布局方式:
<hbox > </hbox>   -----横向排列
<vbox > </vbox>   -----纵向排列
 
 
 
 
分享到:
评论

相关推荐

    zk-bin-6.5.0.zip

    zk-6.5.0.zip ZK 6.5.0 Sep 12, 2012 * Features ZK-447: The file upload allows users to drag and drop local files (HTML5) ZK-1241: ZK Client Widget support swipe event for tablet/mobile device ZK-...

    TPC-ZK-II集成开发环境

    TPC-ZK-II微机接口实验系统正是在这种背景下推出的,该设备在TPC-ZK-II微机接口实验系统上配置了USB接口模块,直接与主机(PC)的USB接口连接,形成了一套完整的USB总线接口的微机接口实验系统。

    TPC-ZK-II集成开发环境(64位).rar

    《TPC-ZK-II集成开发环境(64位)》是一款专为微机程序设计而打造的高效开发工具,尤其适合中文用户使用。在这款64位版本的集成开发环境中,用户可以进行高效的编程、调试以及项目管理,极大地提升了开发效率和编程...

    Zkteco中控智慧信息屏设备ZK-S1007用户手册.pdf

    【Zkteco中控智慧信息屏设备ZK-S1007用户手册】是一份详细的指导文档,旨在帮助用户充分理解和操作中控智慧的ZK-S1007信息屏设备。这款设备集成了先进的生物识别技术和多媒体展示功能,常用于办公、教育、商业等场所...

    zk-bin-5.0.0-RC.zip_DEMO_fckez.jar_zk_zk demo_zk-demo-5.0.z

    【标题】"zk-bin-5.0.0-RC.zip_DEMO_fckez.jar_zk_zk demo_zk-demo-5.0.z" 暗示这是一个关于Zookeeper的演示项目,版本为5.0.0-RC。其中包含了一个名为`fckez.jar`的应用程序,以及与Zookeeper(zk)相关的示例代码...

    Zkteco中控智慧雷达探测器ZK-RD01-79用户手册.pdf

    中控智慧设备说明书

    zk-bin-3.6.1

    标题“zk-bin-3.6.1”暗示我们正在讨论ZooKeeper的一个特定版本的二进制分发包,这是Apache ZooKeeper的3.6.1版本。ZooKeeper是一个分布式的,开放源码的协调服务,它为分布式应用程序提供一致性服务。这个包通常...

    Go-zk-sniffer使用golang嗅探和解析ZooKeeper数据包

    《Go-zk-sniffer:利用Golang解析ZooKeeper数据包》 ZooKeeper,作为分布式协调服务,广泛应用于各种分布式系统中。然而,对于其内部数据包的监控和分析,往往需要专业的工具来帮助我们理解系统运行状态。Go-zk-...

    ZK-bin包文件

    ZK-bin包文件是ZooKeeper的可执行文件集合,包含了运行ZooKeeper服务所需的所有必要组件。在Eclipse环境中部署ZK-bin包,可以方便地进行开发和测试工作。 首先,了解ZooKeeper的核心概念: 1. **节点(Znode)**:...

    zk-src-6.0.1.zip_zk_zk java_zk-src-6.5.1.1

    标题中的"zk-src-6.0.1.zip_zk_zk_java_zk-src-6.5.1.1"指的是ZK框架的源代码压缩包,包含版本6.0.1和6.5.1.1。ZK是一个基于Java开发的用户界面框架,专门用于构建富Web应用。这里提到了两个版本的源代码,意味着...

    zk-bin-7.0.2.zip

    标题中的"zk-bin-7.0.2.zip"是一个ZK框架的二进制发行版,版本号为7.0.2。ZK是一个基于Java的用户界面开发框架,专门用于构建富客户端Web应用,尤其是那些需要丰富交互性的网页应用。ZK提供了一种简单而直接的方式来...

    zk-bin-3.6.2.zip_zk_zk version 3_zk-bin-5.0.2

    【标题】"zk-bin-3.6.2.zip_zk_zk version 3_zk-bin-5.0.2" 涉及到的是ZooKeeper的两个不同版本,即3.6.2和5.0.2。ZooKeeper是一个分布式协调服务,广泛应用于大数据和分布式计算系统中,如Hadoop、HBase等。它提供...

    zk-bin-6.5.3.zip

    在本压缩包"zk-bin-6.5.3.zip"中,包含的是ZK的最新版本6.5.3的二进制发行版。 在ZK的开发过程中,开发者通常会依赖ZK提供的jar包来构建和运行分布式应用。这些jar包包含了ZK的客户端和服务端的所有必需组件,使得...

    SMC ZK2-ZSEA-A设置方法

    ### SMC ZK2-ZSEA-A 设置方法详解 #### 一、产品概述 SMC ZK2-ZSEA-A是一款带有节能功能的真空发生器,它采用数字式压力开关技术,适用于各种工业自动化应用场景。该型号的产品能够有效提高真空系统的效率,并具备...

    zk-smoketest, zk smoketest.py 为ZooKeeper集成提供了一个简单的smoketest客户端.zip

    zk-smoketest, zk smoketest.py 为ZooKeeper集成提供了一个简单的smoketest客户端 ZooKeeper Smoketest作者:Patrick ( 请关注我的 Twitter )摘要这个项目提供了一个简单的客户端,用于一个ZooKeeper集成。...

    zk-bin-7.0.3.zip

    标题中的"zk-bin-7.0.3.zip"指的是ZooKeeper的一个特定版本,即7.0.3的二进制发行版。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的必备组件,可以提供诸如命名服务、配置管理、集群同步...

    ZK-ZT2使用手册(1).pdf

    本文档是关于ZK-ZT2多功能直流电机调速器的使用手册。手册详细介绍了该调速器的功能、参数指标、接口说明及控制模式等内容。以下是手册中的关键知识点总结: 1. 产品简介 ZK-ZT2调速器支持四种运行模式:手动(人工...

    node-zk-browser-master

    《深入理解Node.js ZooKeeper浏览器:node-zk-browser-master》 在现代分布式系统中,ZooKeeper是一个不可或缺的组件,它作为一个高可用的分布式协调服务,为数据存储、配置管理、命名服务等提供了强有力的支持。而...

    源码:zk-SNARKs实战:使用circom和snarkjs实现简单版的Tornado

    该源代码对应本人博文《zk-SNARKs实战:使用circom和snarkjs实现简单版的Tornado(含源码)》,如要看该文章,可直接在百度中根据题目搜索

Global site tag (gtag.js) - Google Analytics