`
snoopy7713
  • 浏览: 1149677 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

【zk demos】利用zk tree浏览目录

    博客分类:
  • ZK
zk 
阅读更多

1,页面

 

Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <?page id="indexPage" title="" id="indexPage" cacheable="false" language="xul/html" zscriptLanguage="Java" contentType="text/html;charset=UTF-8"?>  
  3. <?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?>  
  4. <?taglib uri="http://www.zkoss.org/zktools/zktools" prefix="z"?>  
  5. <?link rel="stylesheet" href="/css/global.css" type="text/css" media="screen" ?>  
  6. <window xmlns:w="client" xmlns:n="native" xmlns="http://www.zkoss.org/2005/zul"  
  7.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  8.     xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd"  
  9.     apply="${z:ctrl('indexController')}">  
  10.     浏览目录   
  11.     <textbox id="txtRoot"></textbox><button forward="onLoadFiles" label="Browse..."></button>  
  12.     <tree id="treeDir">  
  13.     </tree>  
  14. </window>  
<?xml version="1.0" encoding="utf-8"?>
<?page id="indexPage" title="" id="indexPage" cacheable="false" language="xul/html" zscriptLanguage="Java" contentType="text/html;charset=UTF-8"?>
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?>
<?taglib uri="http://www.zkoss.org/zktools/zktools" prefix="z"?>
<?link rel="stylesheet" href="/css/global.css" type="text/css" media="screen" ?>
<window xmlns:w="client" xmlns:n="native" xmlns="http://www.zkoss.org/2005/zul"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd"
	apply="${z:ctrl('indexController')}">
	浏览目录
	<textbox id="txtRoot"></textbox><button forward="onLoadFiles" label="Browse..."></button>
	<tree id="treeDir">
	</tree>
</window>

 

 

2,java代码,关于spring controller自动注册注解zk+hibernate+spring零配置

 

Java代码 复制代码 收藏代码
  1. import java.io.File;   
  2.   
  3. import org.apache.commons.lang.StringUtils;   
  4. import org.springframework.context.annotation.Scope;   
  5. import org.springframework.stereotype.Controller;   
  6. import org.zkoss.zk.ui.event.Event;   
  7. import org.zkoss.zk.ui.event.EventListener;   
  8. import org.zkoss.zk.ui.event.Events;   
  9. import org.zkoss.zk.ui.util.GenericAutowireComposer;   
  10. import org.zkoss.zul.Treeitem;   
  11. import org.zkoss.zul.api.Textbox;   
  12. import org.zkoss.zul.api.Tree;   
  13. import org.zkoss.zul.api.Treechildren;   
  14.   
  15. import com.sun4love.common.web.zk.ZkUtils;   
  16.   
  17. @Controller  
  18. @Scope("prototype")   
  19. public class IndexController extends GenericAutowireComposer {   
  20.     private static final long serialVersionUID = 5909684044186358102L;   
  21.     private Textbox txtRoot;   
  22.     private Tree treeDir;   
  23.   
  24.     public void onLoadFiles() {   
  25.         String root = txtRoot.getText();   
  26.         File file = new File(root);   
  27.         if (!file.exists() || file.isFile()) {   
  28.             ZkUtils.showExclamation(String.format("%s不存在或不是一个目录", root), "提示");   
  29.             return;   
  30.         }   
  31.         if (treeDir.getTreechildrenApi() == null) {   
  32.             new org.zkoss.zul.Treechildren().setParent(treeDir);   
  33.         }   
  34.         createTreeitem(file, treeDir.getTreechildrenApi());   
  35.     }   
  36.   
  37.     private void createTreeitem(final File file, Treechildren tc) {   
  38.         String fileName = StringUtils.isBlank(file.getName()) ? file   
  39.                 .getAbsolutePath() : file.getName();   
  40.         final Treeitem treeitem = new Treeitem(fileName, file);   
  41.         if (file.isDirectory()) {   
  42.             treeitem.setImage("/images/ClosedFolder.gif");   
  43.             treeitem.addEventListener(Events.ON_CLICK, new EventListener() {   
  44.                 public void onEvent(Event evt) throws Exception {   
  45.                     try {   
  46.                         File[] fs = file.listFiles();   
  47.                         if (fs == null) {   
  48.                             return;   
  49.                         }   
  50.                         if (!createTreechildren(treeitem)) {   
  51.                             return;   
  52.                         }   
  53.                         for (File f : fs) {   
  54.                             createTreeitem(f, treeitem.getTreechildren());   
  55.                         }   
  56.                     } catch (Exception e) {   
  57.                         ZkUtils.showExclamation("无访问目录权限""提示");   
  58.                     }   
  59.                 }   
  60.             });   
  61.         } else {   
  62.             treeitem.setImage("/images/file_16x16.gif");   
  63.         }   
  64.         treeitem.setParent(tc);   
  65.   
  66.     }   
  67.     private boolean createTreechildren(Treeitem item) {   
  68.         if (item.getTreechildrenApi() == null) {   
  69.             new org.zkoss.zul.Treechildren().setParent(item);   
  70.             return true;   
  71.         } else {   
  72.             return false;   
  73.         }   
  74.     }   
  75.   
  76. }  
import java.io.File;

import org.apache.commons.lang.StringUtils;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.util.GenericAutowireComposer;
import org.zkoss.zul.Treeitem;
import org.zkoss.zul.api.Textbox;
import org.zkoss.zul.api.Tree;
import org.zkoss.zul.api.Treechildren;

import com.sun4love.common.web.zk.ZkUtils;

@Controller
@Scope("prototype")
public class IndexController extends GenericAutowireComposer {
	private static final long serialVersionUID = 5909684044186358102L;
	private Textbox txtRoot;
	private Tree treeDir;

	public void onLoadFiles() {
		String root = txtRoot.getText();
		File file = new File(root);
		if (!file.exists() || file.isFile()) {
			ZkUtils.showExclamation(String.format("%s不存在或不是一个目录", root), "提示");
			return;
		}
		if (treeDir.getTreechildrenApi() == null) {
			new org.zkoss.zul.Treechildren().setParent(treeDir);
		}
		createTreeitem(file, treeDir.getTreechildrenApi());
	}

	private void createTreeitem(final File file, Treechildren tc) {
		String fileName = StringUtils.isBlank(file.getName()) ? file
				.getAbsolutePath() : file.getName();
		final Treeitem treeitem = new Treeitem(fileName, file);
		if (file.isDirectory()) {
			treeitem.setImage("/images/ClosedFolder.gif");
			treeitem.addEventListener(Events.ON_CLICK, new EventListener() {
				public void onEvent(Event evt) throws Exception {
					try {
						File[] fs = file.listFiles();
						if (fs == null) {
							return;
						}
						if (!createTreechildren(treeitem)) {
							return;
						}
						for (File f : fs) {
							createTreeitem(f, treeitem.getTreechildren());
						}
					} catch (Exception e) {
						ZkUtils.showExclamation("无访问目录权限", "提示");
					}
				}
			});
		} else {
			treeitem.setImage("/images/file_16x16.gif");
		}
		treeitem.setParent(tc);

	}
	private boolean createTreechildren(Treeitem item) {
		if (item.getTreechildrenApi() == null) {
			new org.zkoss.zul.Treechildren().setParent(item);
			return true;
		} else {
			return false;
		}
	}

}

 

 

 

 效果图

 

 

分享到:
评论

相关推荐

    Android6.0 Api Demos

    API Demos提供了使用JobScheduler的例子,有助于优化资源利用和电量管理。 9. **Android Pay与Wallet Framework** 如果你对集成支付功能感兴趣,API Demos包含了Android Pay的示例,展示了如何使用Wallet ...

    frsp_demos.zip_FRSP_Demos.zip_demos_processing_richards_signal

    Signal processing demos from Richards

    ApiDemos示例源码

    《ApiDemos示例源码解析》 ApiDemos是Android平台提供的一款示例应用,它包含了Android SDK中的各种API功能展示,对于...因此,建议每个Android开发者都应熟悉并充分利用这个示例库,为自己的开发工作打下坚实的基础。

    最新Android apidemos

    《深入探索Android API Demos:最新实践与技术解析》 Android API Demos是Google官方提供的一款用于展示Android SDK中各种API功能和用法的应用程序,它涵盖了从基础控件到高级特性的全方位示例,是开发者学习...

    Android ApiDemos apk

    《Android ApiDemos apk:深入理解Android应用开发的实践指南》 Android ApiDemos apk是Android开发者们熟悉的一个示例程序,它包含了Android SDK中的各种API功能演示,为开发者提供了丰富的学习资源。这个应用程序...

    ApiDemos(6.0)

    ApiDemos 6.0

    android demos

    "滑页例子"可能涉及ViewPager的使用,这是一个允许用户通过水平滑动来浏览多个页面的组件。它可以用来实现如应用切换、轮播图或Tab布局等效果。开发者需要理解如何设置PagerAdapter,以及如何同步页面与指示器的状态...

    android Support4Demos

    在`Support4Demos`中,`Fragment`被用来创建横屏页面,每个`Fragment`代表一个屏幕内容,这样用户可以在横屏模式下流畅地滑动浏览不同的页面。 接下来,我们关注`ViewPager`。`ViewPager`是`android.support.v4....

    Android ApiDemos

    《Android ApiDemos详解——揭示Android开发的奥秘》 Android ApiDemos是Android开发者学习和探索平台功能的重要资源库,它集成了Android SDK中的各种控件、绘图技术以及四大组件(Activity、Service、...

    8.1版本ApiDemos源码

    《Android 8.1版本ApiDemos源码详解:深入理解API使用实例》 在Android开发领域,理解和熟练运用各种API是提升技能的关键步骤。"8.1版本ApiDemos源码"为开发者提供了一个宝贵的资源,它包含了Android 8.1系统中各种...

    Support4Demos 源码

    8. **ViewPager与FragmentPagerAdapter的结合**:展示如何使用ViewPager来滑动浏览多个Fragment。 通过研究`Support4Demos`的源码,开发者不仅可以学习到如何在实际项目中应用Support Library v4,还可以掌握...

    mesa-demos_8.4.0.orig.tar.gz 里面有opengles2demo

    这将自动下载并解压mesa-demos的源代码,其中包括mesa-demos-8.4.0目录,其中包含了各种演示程序的源代码。这些源代码可以帮助开发者了解如何组织一个完整的OpenGL ES应用程序,包括设置上下文、加载着色器、处理...

    flex demos

    在“flex demos”这个压缩包中,我们能看到一系列针对不同应用场景的示例,如Alarm Demos、Network Demos和Tree Demos,这些都是开发者学习Flex编程的宝贵资源。 1. **Alarm Demos**: Alarm Demos通常涉及到时间...

    最新ApiDemos源码,直接下载导入即可使用

    - **目录结构**:ApiDemos的源码通常会按照Android应用的标准结构进行组织,包括`src/main/java`(Java代码)、`res`(资源文件)、`AndroidManifest.xml`(应用清单)等。在`java`目录下,你会看到按照功能或组件...

    ant-design-demos

    "ant-design-demos" 是一个基于Ant Design框架的示例集合,主要展示了Ant Design的各种组件和功能在实际应用中的使用方式。Ant Design是一款由阿里集团开发的高质量React UI库,它提供了一系列美观、易用且具有企业...

    DevExpress Demos

    DevExpress是一款知名的软件开发工具提供商,其提供的DevExpress Demos是一系列展示其控件和框架功能的实例应用。在这款17.2版本的WinForm Demo中,开发者可以深入了解和学习DevExpress的Windows Forms平台上的组件...

    Android开发入门与实例 Demos

    进入实例部分,"demos"目录下的文件很可能是各种示例代码,涵盖了Android开发中的常见功能和组件: - **活动(Activity)**:展示用户界面,例如MainActivity.java,展示了如何创建一个基本的活动。 - **布局(Layout)...

    API-Demos(7.0源码)

    《API-Demos(7.0源码)深度解析》 API Demos是Android系统源码中的一部分,它是一个包含了各种Android API示例的项目,专为开发者设计,用于展示和学习Android系统的各种功能和API的使用。这个项目是基于Android ...

    javaFX demos

    通过这些演示,开发者可以学习如何利用JavaFX API来构建复杂的UI、实现动态效果以及与其他Java技术集成。 描述中的“sun公司的旗舰产品 就不用我吹了”暗示了JavaFX曾是Sun Microsystems(后被甲骨文收购)的重要...

Global site tag (gtag.js) - Google Analytics