`
strgo
  • 浏览: 2196 次
  • 性别: Icon_minigender_1
  • 来自: 夜
最近访客 更多访客>>
社区版块
存档分类
最新评论

[十分着急]EXT-GWT中TREE的拖拽如何实现?

 
阅读更多

目前本人正在着手一个ext_gwt的项目,遇到一个问题,在此请假大家,希望得到大家的帮助,感谢!

 

以下注意:

1.是EXT-GWT,也就是说是这个JAR包com.extjs.gxt,切记。

2.是对树结构往其他地方的拖拽,而不是对图片文本之类的拖拽

 

以下提供部分代码:

VtsTaskModel.java

 

package com.lingran.vts.client.model;

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

import com.extjs.gxt.ui.client.data.BaseTreeModel;
import com.extjs.gxt.ui.client.data.TreeModel;
import com.lingran.vts.client.pages.OverviewPage;
import com.lingran.vts.client.pages.Page;

public class VtsTaskModel extends BaseTreeModel
{
	private List<Entry> entries = new ArrayList<Entry>();
	
	private Category createYearPlanEntries()
	{
		Category category = new Category("年计划");
			category.add(new YearEntry ("Y2006", "2006年"));
			category.add(new YearEntry ("Y2007", "2007年"));
			category.add(new YearEntry ("Y2008", "2008年"));
			category.add(new YearEntry ("Y2009", "2009年"));
			category.add(new YearEntry ("Y2010", "2010年"));
		return category;
	}
	private Category createMonthPlanEntries()
	{
		Category category = new Category("月计划");
			category.add(new MonthEntry ("M200806", "2008年06月"));
			category.add(new MonthEntry ("M200807", "2008年07月"));
			category.add(new MonthEntry ("M200808", "2008年08月"));
		return category;
	}
	private Category createWeekPlanEntries()
	{
		Category category = new Category("周计划");
		category.add(new MonthEntry ("W20080701", "2008年07月,第一周"));
		category.add(new MonthEntry ("W20080702", "2008年07月,第二周"));
		category.add(new MonthEntry ("W20080703", "2008年07月,第三周"));
		return category;
	}
	private Category createDayPlanEntries()
	{
		Category category = new Category("日常计划");
			Category week;
			week = new Category ("上一周");
			category.add(week);
				week.add(new DayEntry ("D20080713", "2008年07月13日,星期一"));
				week.add(new DayEntry ("D20080714", "2008年07月14日,星期二"));
				week.add(new DayEntry ("D20080715", "2008年07月15日,星期三"));
				week.add(new DayEntry ("D20080716", "2008年07月16日,星期四"));
				week.add(new DayEntry ("D20080717", "2008年07月17日,星期五"));
				week.add(new DayEntry ("D20080718", "2008年07月18日,星期六"));
				week.add(new DayEntry ("D20080719", "2008年07月19日,星期天"));
			week = new Category ("本周");
			category.add(week);
				week.add(new DayEntry ("D20080713", "2008年07月13日,星期一"));
				week.add(new DayEntry ("D20080714", "2008年07月14日,星期二"));
				week.add(new DayEntry ("D20080715", "2008年07月15日,星期三"));
				week.add(new DayEntry ("D20080716", "2008年07月16日,星期四"));
				week.add(new DayEntry ("D20080717", "2008年07月17日,星期五"));
				week.add(new DayEntry ("D20080718", "2008年07月18日,星期六"));
				week.add(new DayEntry ("D20080719", "2008年07月19日,星期天"));
			week = new Category ("下一周");
			category.add(week);
				week.add(new DayEntry ("D20080713", "2008年07月13日,星期一"));
				week.add(new DayEntry ("D20080714", "2008年07月14日,星期二"));
				week.add(new DayEntry ("D20080715", "2008年07月15日,星期三"));
				week.add(new DayEntry ("D20080716", "2008年07月16日,星期四"));
				week.add(new DayEntry ("D20080717", "2008年07月17日,星期五"));
				week.add(new DayEntry ("D20080718", "2008年07月18日,星期六"));
				week.add(new DayEntry ("D20080719", "2008年07月19日,星期天"));
		return category;
	}
	private Category createProjectEntries ()
	{
		Category category = new Category("项目计划");
		return category;
	}
	private Category createTodayPersonTaskEntries ()
	{
		Category category = new Category("今日派发任务");
		return category;	
	}
	public VtsTaskModel()
	{
		set("overview", new Entry("Overview"));
		
		// Period plan tree content
		Category periodPlans = new Category("周期计划");
		periodPlans.add(createYearPlanEntries());
		periodPlans.add(createMonthPlanEntries());
		periodPlans.add(createWeekPlanEntries());
		periodPlans.add(createDayPlanEntries());
		add(periodPlans);
		// Project tree content
		add(createProjectEntries ());
		// Tody person tasks 
		add(createTodayPersonTaskEntries ());
		
		loadEntries(this);
	}

	public Entry findEntry(String name)
	{
		if (get(name) != null)
		{
			return (Entry) get(name);
		}
		for (Entry entry : getEntries())
		{
			if (name.equals(entry.getId()))
			{
				return entry;
			}
		}
		return null;
	}

	public List<Entry> getEntries()
	{
		return entries;
	}

	private void loadEntries(TreeModel<TreeModel> model)
	{
		for (TreeModel child : model.getChildren())
		{
			if (child instanceof Entry)
			{
				entries.add((Entry) child);
			}
			else if (child instanceof Category)
			{
				loadEntries(child);
			}
		}
	}

}

 

ContentView.java

package com.lingran.vts.client.mvc;

import com.extjs.gxt.ui.client.Events;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.TabPanelEvent;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.extjs.gxt.ui.client.mvc.View;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.lingran.vts.client.AppEvents;
import com.lingran.vts.client.model.Entry;
import com.lingran.vts.client.pages.Page;

public class ContentView extends View {

  private TabPanel tabPanel;
  private Page current;

  public ContentView(Controller controller) {
    super(controller);
  }

  public void initialize() {
    tabPanel = new TabPanel();
    tabPanel.setBorderStyle(false);
    tabPanel.setBodyBorder(false);
    tabPanel.setTabScroll(true);
    tabPanel.setAnimScroll(true);
    /*
    tabPanel.addListener(Events.Remove, new Listener<TabPanelEvent>() {
      public void handleEvent(TabPanelEvent be) {
        TabItem item = be.item;
        Entry entry = (Entry)item.getModel();
        Dispatcher.forwardEvent(AppEvents.HidePage, entry);
      }
    });
    */
    /*
	 * tabPanel.addListener(Events.BeforeSelect, new Listener<TabPanelEvent>() {
	 * public void handleEvent(TabPanelEvent be) { Entry entry =
	 * (Entry)be.item.getData("entry"); if (entry.getPage() != current) {
	 * be.doit = false; VtsTask.showPage(entry); } } });
	 */
    ContentPanel center = (ContentPanel) Registry.get("centerPanel");
	    center.setLayout(new BorderLayout());
	    
	    //ContentPanel north = new ContentPanel();
	    ContentPanel west = new ContentPanel();
	    ContentPanel east = new ContentPanel();
	    ContentPanel south = new ContentPanel();

	    BorderLayoutData westData = new BorderLayoutData(LayoutRegion.WEST, 300);
	    westData.setSplit(true);
	    westData.setCollapsible(true);
	    westData.setMargins(new Margins(5));
	    
	    BorderLayoutData eastData = new BorderLayoutData(LayoutRegion.CENTER);
	    eastData.setMargins(new Margins(5, 0, 5, 0));
	    
	    BorderLayoutData southData = new BorderLayoutData(LayoutRegion.SOUTH, 200);
	    southData.setSplit(true);
	    southData.setCollapsible(true);
	    southData.setFloatable(true);
	    southData.setMargins(new Margins(0, 5, 5, 5));
	    
	    center.add(west, westData);
	    center.add(east, eastData);
	    center.add(south, southData);
    center.add(tabPanel);
  }

  protected void handleEvent(AppEvent event) 
  {
/*
 * switch (event.type) { case AppEvents.ShowPage: Entry entry = (Entry)
 * event.data; onShowPage(entry); break; case AppEvents.HidePage: current =
 * null; break; }
 */
  }

}

 

 

下面是部分图片:

1.png(拖拽的图片)

 

  • 大小: 11.4 KB
分享到:
评论

相关推荐

    gwt-ext-tree

    5. **拖放功能(Drag and Drop)**:GWT-Ext-Tree 支持拖放操作,允许用户重新排列树中的节点,或者从外部源(如文件系统)拖动数据到树中。这对于需要用户手动组织信息的应用场景非常有用。 6. **分页和无限滚动...

    非常好的gwt-ext培训教程

    2. **树形视图(Tree)**: 具备拖拽功能,方便组织和操作层次结构的数据。 3. **组合下拉框(Combobox)**: 可高度定制,提供丰富的选项和搜索功能。 4. **对话框(Dialog)**和**表单(Form)**: 提供易于使用的...

    GWT-Ext_体验之旅.doc

    GWT-Ext 的核心特点在于它扩展了 GWT,融合了 ExtJS 的丰富界面组件,包括有排序功能的表格(Grid)、分页、过滤、拖拽功能的树、自定义的组合下拉框(Combobox)、目录、对话框、表单(Form)等。 1. **GWT-Ext 的...

    log4Net详解(共2讲)

    2.6、ExtJs中的ExtTree详解 3、ExtJs数据篇 3.1、数据存储基本单元Record与DataField详解 3.2、数据存储Store详解1 3.3、数据存储Store详解2 3.4、数据代理DataProxy详解 3.5、数据读取器DataReader详解 3.6...

    jspm心理健康系统演示录像2021.zip

    所有源码都有经过测试,可以运行,放心下载~

    【故障诊断】基于matlab金枪鱼算法优化双向时间卷积神经网络TSO-BiTCN轴承数据故障诊断【Matlab仿真 5087期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    Amanda:Amanda机器学习实践.docx

    Amanda:Amanda机器学习实践.docx

    数据集蛇数据集826张YOLO+VOC格式.zip

    数据集格式:VOC格式+YOLO格式 压缩包内含:3个文件夹,分别存储图片、xml、txt文件 JPEGImages文件夹中jpg图片总计:826 Annotations文件夹中xml文件总计:826 labels文件夹中txt文件总计:826 标签种类数:1 标签名称:["Snake"] 每个标签的框数: Snake 框数 = 1147 总框数:1147 图片清晰度(分辨率:像素):清晰 图片是否增强:否 标签形状:矩形框,用于目标检测识别 重要说明:暂无 特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注

    RCEP伙伴国技术性贸易壁垒对中国出口贸易的影响研究_刘主光.caj

    RCEP伙伴国技术性贸易壁垒对中国出口贸易的影响研究_刘主光.caj

    【光伏功率预测】基于matlab粒子群算法优化高斯过程回归PSO-GPR光伏功率预测(多输入单输出)【Matlab仿真 4373期】.zip

    【光伏功率预测】基于matlab粒子群算法优化高斯过程回归PSO-GPR光伏功率预测(多输入单输出)【Matlab仿真 4373期】

    【DELM回归预测】基于matlab蜂虎狩猎算法改进深度学习极限学习机BEH-DELM数据回归预测【Matlab仿真 3847期】.zip

    【DELM回归预测】基于matlab蜂虎狩猎算法改进深度学习极限学习机BEH-DELM数据回归预测【Matlab仿真 3847期】

    【BP回归预测】基于matlab多元宇宙算法优化BP神经网络MVO-BP光伏数据预测(多输入单输出)【Matlab仿真 5150期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    HNUST数据仓库与数据挖掘期末复习(自整理)

    内容概要:本文综述了数据挖掘技术的核心概念和技术,详细介绍了多种数据挖掘算法,包括关联规则挖掘算法(如Apriori、FP-tree),分类算法(如决策树的ID3/C4.5、K-NN、贝叶斯分类)和聚类算法(如K-均值、层次聚类和密度聚类)。此外,文档也探讨了KDD(知识发现过程)、聚类与分类的区别以及聚类分析算法的评估指标等关键议题。 使用场景及目标(期末突击):①理解和掌握数据挖掘的基本原理与常用算法;②应用于各种数据分析场景,如客户分群、推荐系统、市场篮子分析等。

    页面居中设置的process

    页面居中设置的process

    【光伏功率预测】基于matlab高斯过程回归GPR光伏功率预测【Matlab仿真 4372期】.zip

    【光伏功率预测】基于matlab高斯过程回归GPR光伏功率预测【Matlab仿真 4372期】

    BLE蓝牙单片机CC2540、CC2541带OSAL操作系统的例程-点亮LED灯.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2540/CC2541上运行,如果是其他型号芯片,请自行调整。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。

    【图像分割数据集】-芒果缺陷分割检测数据集3154张json格式.zip

    数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):3154 标注数量(json文件个数):3154 标注类别数:7 标注类别名称:["Healthy-mango","Damaged-mango","Anthracnose","Bacterial-Black-spot","Others","Fruitly","Mechanical-damage"] 每个类别标注的框数: Healthy-mango count = 603 Damaged-mango count = 4419 Anthracnose count = 2840 Bacterial-Black-spot count = 831 Others count = 485 Fruitly count = 2469 Mechanical-damage count = 33 使用标注工具:labelme=5.5.0 标注规则:对类别进行画多边形框polygon 重要说明:可以将数据集用labelme打开编辑,json数据集需自己转成mask或者yolo格式或者coco

    Ventoy是一款开源工具,专门用于制作可启动U盘

    一、主要功能 Ventoy能够支持在同一个U盘上存储多个不同的操作系统镜像,并在启动时提供选择菜单,方便用户选择要启动的操作系统。它无需反复格式化U盘,只需将ISO、WIM、IMG、VHD(x)、EFI等类型的文件拷贝到U盘里面就可以启动了,无需其他操作。同时,Ventoy还支持大部分常见类型的操作系统,如Windows、Linux、Unix、VMware、Xen等。 二、使用优势 便捷性:使用Ventoy制作启动盘非常简单,用户只需将U盘插入电脑,运行Ventoy安装程序,按照提示操作即可完成启动盘的创建。此外,Ventoy支持一次性拷贝多个不同类型的镜像文件,并在启动时显示一个菜单供用户选择,大大提高了使用的便捷性。 多系统支持:Ventoy能够支持几乎所有主流的操作系统,满足用户在操作系统选择和使用上的灵活性需求。 快速启动:Ventoy在启动时能够快速加载操作系统选择菜单,减少了用户的等待时间,提高了工作效率。 更新与维护:Ventoy项目保持活跃的更新,开发者不断修复漏洞、优化性能,并增加对新操作系统和硬件的支持。

    基于java的医院库存管理系统源代码(完整前后端+mysql+说明文档+LW).zip

    管理员模块: 系统管理员管理:管理系统管理员的账户和权限。 药品类别管理:管理药品的分类信息。 药品信息管理:管理药品的详细信息,如名称、规格、价格等。 药品供应商管理:管理药品供应商的信息。 员工信息管理:管理医院员工的资料和信息。 药品出库管理:管理药品出库的流程和记录。 药品销量查询统计:查询和统计药品的销售情况。 员工模块: 员工资料修改:员工可以修改自己的个人信息。 药品销售登记:员工记录药品的销售情况。 出库信息查询:员工查询药品出库的相关信息。 环境说明: 开发语言:Java,jsp JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea 部署容器:tomcat

    【ELM回归预测】基于matlab人工兔算法优化极限学习机ARO-ELM数据回归预测【Matlab仿真 3834期】.zip

    【ELM回归预测】基于matlab人工兔算法优化极限学习机ARO-ELM数据回归预测【Matlab仿真 3834期】

Global site tag (gtag.js) - Google Analytics