直接来代码:
下面是我一个GWT中的树结构实现,大家不用关系是GWT什么的,我的问题是关于树的?请大家帮助,谢谢
其中子菜单中的数据本来应该借助数据库,直接查到然后比较的。但是现在我需要算出来,比如
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;
上面代码中 今年是2008年,往上算两年即2007和2006,往后算两年即2009和2010,然后排列出来。如何实现?
还有一点显示出来的时候,今年这里后面有个红色"[√ ]"的标记。
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);
}
}
}
}
分享到:
- 2008-07-24 14:31
- 浏览 775
- 评论(1)
- 论坛回复 / 浏览 (1 / 1625)
- 查看更多
相关推荐
根据提供的信息,我们可以深入探讨关于“动态加载树结构实现方法”的相关知识点,特别是递归调用在树结构中的应用。 ### 动态加载树结构实现方法 #### 1. 树结构简介 树结构是一种非线性的数据结构,用于表示具有...
本项目“wpf datagrid实现树结构”就是针对这种需求的一个实例,它展示了如何在WPF的DataGrid中实现树状的数据展示。 首先,我们来理解一下核心概念。WPF的DataGrid控件默认并不支持树形结构,但可以通过自定义模板...
在IT行业中,尤其是在嵌入式系统和用户界面设计领域,树结构是一种常用的数据组织方式,它在实现页面显示时有着显著的优势。本文将详细探讨如何利用树结构来优化页面显示,以及与STM32微控制器、文件系统(如FATS)...
这里我们讨论如何在Java中实现一个支持多根节点的树结构,并使用ZTree(一种流行的JavaScript库)进行展示。首先,我们需要理解树的基本概念。 **树结构基础** 树是一种非线性数据结构,由节点和边组成。每个节点...
通过学习和理解这些代码,开发者可以掌握如何在实际项目中实现树结构的复选框多选全选功能。 总之,理解和实现"树结构 复选框 多选 全选功能"是提升前端开发技能的重要一环。它要求开发者具备数据结构知识、事件...
通用树结构的基本操作,包含如下操作: 1. 创建树; 2. 销毁树; 3. 清空树; 4. 插入结点; 5. 删除结点; 6. 获取结点; 7. 获取根结点; 8. 获取树的结点数; 9. 获取树的高度; 10. 获取树的度。 11.显示树结构...
树结构使用实例-实现数组和树结构的转换
本教程将详细讲解如何在Visual Studio 2012中,使用C#语言和WinForms来实现一个在`DataGridView`中显示树结构的示例。 首先,理解`DataGridView`控件的基本特性。它是一个可自定义的、可扩展的数据展示组件,支持...
下拉框实现树结构带禁用.vue
Java树结构递归详细说明 Java树结构是Java后台常用的数据结构,通过递归写成的。树结构的用法实例包括树目录的总结、函数的参数说明、dtree.js文件的默认图片...树结构可以通过递归函数来实现,并且可以在页面中使用。
在计算机科学中,树形结构由节点(通常称为“结点”)组成,每个节点可能有零个或多个子节点。根节点是树的起点,没有父节点,而叶节点没有子节点。树形结构通过边连接各个节点,形成一个层次结构。 树形结构的实现...
此java类实现了对数据表的分类递归树的实现,为本人倾力之作,后期,会发布js版,敬请期待!
本文主要探讨了使用Vue框架实现带有复选框的树形结构组件,重点在于在已有的递归组件基础上添加多选框功能,并实现一些基本的交互逻辑。要实现这样的功能,需要考虑以下几个关键技术点: 1. **递归组件的使用**:...
但是,目前在软件开发中对N叉树结构的研究和应用还存在一些问题,如缺乏通用的N叉树结构规范建模方式和相关的面向对象设计模式,N叉树结构在具体语言环境下的实现方式尚未得到足够的重视,缺乏高效、规范的算法解决...
总结,Java中的无限极树结构涉及节点类的设计、遍历、插入删除操作、数据结构的构建以及在实际应用中的实现。理解这些知识点并熟练运用,对于处理层次关系的数据问题至关重要。在实际项目中,要根据具体需求选择合适...
自己写的一个 用java代码复制树形结构数据的方法 很实用 希望对有需求的朋友给予帮助
在本文中,我们将深入探讨如何在WPF(Windows Presentation Foundation)环境中使用DataGrid控件实现树形结构,并且能够将展开控件(如ToggleButton)放置在任意列,同时支持多列冻结不可拖动。这对于创建复杂的用户...
在编程领域,多叉树是一种非线性数据结构,它扩展了二叉树的概念,允许每个节点有多个子节点。C++作为一种强大的编程语言,提供了丰富的库和特性来实现这样的数据结构。本篇将深入探讨如何使用C++来构建一个多叉树...
html 树形结构 简单实现
在PowerBuilder中实现DataWindow树形结构的关键技术与实践 一、树形结构的重要性与应用场景 树形结构在软件开发中扮演着至关重要的角色,尤其是在处理具有层级关系的数据时。这种结构不仅能够清晰地展现数据之间的...