ZK tree使用mold

前台Tree.zul

<?page title="Tree使用" contentType="text/html;charset=UTF-8"?>
<zk xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns="http://www.zkoss.org/2005/zul" 
        xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul">
<window title="" border="normal" apply="test.treeCtrl">
    <tree id="tree" pageSize="10" mold="paging" rows="10" >
        <treecols>
            <treecol label="Name"/>
            <treecol label="Description"/>
        </treecols>
        <treefoot>
            <treefooter label="底部"/>
        </treefoot>
    </tree>
</window>
</zk>

后台treeCtrl.java:

package test;

import java.util.ArrayList;
import java.util.List;

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericAutowireComposer;
import org.zkoss.zul.DefaultTreeModel;
import org.zkoss.zul.DefaultTreeNode;
import org.zkoss.zul.Tree;
import org.zkoss.zul.Treecell;
import org.zkoss.zul.Treeitem;
import org.zkoss.zul.TreeitemRenderer;
import org.zkoss.zul.Treerow;

public class treeCtrl extends GenericAutowireComposer<Component>{
    
    private static final long serialVersionUID = 1L;
    private Tree tree;
    
    
    @Override
    public void doAfterCompose(Component comp) throws Exception {
        // TODO Auto-generated method stub
        
        super.doAfterCompose(comp);
        
        DefaultTreeModel<FileInfo> model = new DefaultTreeModel<FileInfo>(getFileInfoTreeData());
        tree.setModel(model);
        tree.setItemRenderer(new FileInfoRenderer());
    }
    
    private DefaultTreeNode<FileInfo> getFileInfoTreeData() {
        List<DefaultTreeNode<FileInfo>> inner3 = new ArrayList<DefaultTreeNode<FileInfo>>();
        inner3.add(new DefaultTreeNode<FileInfo>(new FileInfo("zcommon.jar", "ZK Common Library")));
        inner3.add(new DefaultTreeNode<FileInfo>(new FileInfo("zk.jar", "ZK Core Library")));
        
        List<DefaultTreeNode<FileInfo>> inner2 = new ArrayList<DefaultTreeNode<FileInfo>>();
        inner2.add(new DefaultTreeNode<FileInfo>(new FileInfo("/lib", "ZK Libraries"), inner3));
        inner2.add(new DefaultTreeNode<FileInfo>(new FileInfo("/src", "Source Code")));
        inner2.add(new DefaultTreeNode<FileInfo>(new FileInfo("/xsd", "XSD Files")));
        
        List<DefaultTreeNode<FileInfo>> inner1 = new ArrayList<DefaultTreeNode<FileInfo>>();
        inner1.add(new DefaultTreeNode<FileInfo>(new FileInfo("/doc", "Release and License Notes")));
        inner1.add(new DefaultTreeNode<FileInfo>(new FileInfo("/dist", "Distribution"), inner2));
        
        return new DefaultTreeNode<FileInfo>(null, inner1);
    }
    
    public class FileInfoRenderer implements TreeitemRenderer<DefaultTreeNode<FileInfo>>{

        @Override
        public void render(Treeitem item, DefaultTreeNode<FileInfo> data, int index)
                throws Exception {
            // TODO Auto-generated method stub
            
            item.setValue(data);
            final FileInfo fi = data.getData();
            item.setOpen(false);
            //for update treeNode data
            Treerow tr = item.getTreerow();
            if(tr == null) {
                tr = new Treerow();
            } else {
                tr.getChildren().clear();
            }
            item.appendChild(tr);
            //render file path cell
            Treecell pathCell = new Treecell();
            pathCell.setLabel(fi.getPath());
            pathCell.setParent(tr);
            //render file description cell
            Treecell descriptionCell = new Treecell();
            descriptionCell.setLabel(fi.getDescription());
            descriptionCell.setParent(tr);
        }

    }
    
    public class FileInfo {
        private String path;
        private String description;

        public FileInfo() {}
        
        public FileInfo(String path, String description) {
            this.path = path;
            this.description = description;
        }

        public String getPath() {
            return path;
        }

        public void setPath(String path) {
            this.path = path;
        }

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }
    }
    
}

 参考:

http://zkfiddle.org/sample/21g0stt/2-Another-new-ZK-fiddle#source-1

原文地址:https://www.cnblogs.com/langdangyunliu/p/4589743.html