需要生成:
http://www.softcomplex.com/products/tigra_menu_tree/
最终生成的菜单:
首先按需求定义了一个model.
package com.jxlt.db.parse; import java.io.Serializable; public class TreeModel implements Serializable { private static final long serialVersionUID = 7896562831509010976L; private String code; private String title; private String url; private boolean leaf; private int level; /** * @return Returns the leaf. */ public boolean isLeaf() { return leaf; } /** * @param leaf * The leaf to set. */ public void setLeaf(boolean leaf) { this.leaf = leaf; } /** * @return Returns the title. */ public String getTitle() { return title; } /** * @param title * The title to set. */ public void setTitle(String title) { this.title = title; } /** * @return Returns the url. */ public String getUrl() { return url; } /** * @param url * The url to set. */ public void setUrl(String url) { this.url = url; } /** * @return Returns the code. */ public String getCode() { return code; } /** * @param code * The code to set. */ public void setCode(String code) { this.code = code; } /** * @return Returns the level. */ public int getLevel() { return level; } /** * @param level * The level to set. */ public void setLevel(int level) { this.level = level; } }
获取内容:
package com.jxlt.db.parse; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import com.jxlt.db.util.DataSourceUtils; public class ParseTree { private static final String sql = "select t.bz_code code, t.bz_title itle, t.bz_content content " + " from bz_czzs t " + " order by t.bz_code"; private static final String sql2 = "select t.bz_code code, t.bz_title title, t.bz_content content " + " from bz_czzs t " + " where substr(t.bz_code, 0, 3) = '002'" + " order by t.bz_code"; public static List parse() { Connection conn = null; Statement st = null; ResultSet rs = null; List list = new ArrayList(); try { conn = DataSourceUtils.getConnection(); st = conn.createStatement(); rs = st.executeQuery(sql2); String code, title = ""; while (rs.next()) { code = rs.getString("code"); title = rs.getString("title"); TreeModel model = new TreeModel(); model.setCode(code); model.setTitle(title); model.setUrl( "m/content/" + code + ".html"); model.setLeaf(false); model.setLevel( code != null ? code.length() / 3 : 0); list.add(model); } } catch (SQLException e) { e.printStackTrace(); } finally { // DataSourceUtils.close(rs); // DataSourceUtils.close(st); DataSourceUtils.close(conn); } return list; } }
生成js文件
package com.jxlt.db.parse; import org.apache.log4j.Logger; import java.util.List; /** * Generate the left tree menu * * @author martin.xus (martin.xus@gmail.com) */ public class GeneratorTree { private static Logger logger = Logger.getLogger(GeneratorTree.class); public static final String TREE_FILE = "D:\workspace\style\test\martin.tree.002.js"; /** * Generate the left tree menu * * @return String */ public static String generator() { StringBuffer buf = new StringBuffer().append(HEADER); List list = ParseTree.parse(); logger.debug("generating tree menu begin"); TreeModel model; TreeModel modelNext; int position; if (null != list && 0 < list.size()) { for (int i = 0, length = list.size(); i < length - 1; i++) { logger.debug("dealed with :" + i + " rows"); StringBuffer _buf = new StringBuffer(); model = (TreeModel) list.get(i); modelNext = (TreeModel) list.get(i + 1); _buf.append("['").append(model.getTitle()).append("','") .append(model.getUrl()).append("'"); if (model.getLevel() > modelNext.getLevel()) { _buf.append(SUFFIX).append(COMMA); } else if (model.getLevel() == modelNext.getLevel()) { _buf.append(SUFFIX).append(COMMA).append(PLACEKICK); } else if (model.getLevel() < modelNext.getLevel()) { _buf.append(COMMA).append(PLACEKICK).append(SUFFIX); } position = buf.toString().indexOf(PLACEKICK); if (position != -1) { buf.replace(position, position + 7, _buf.toString()); } else { buf.insert(buf.length() - model.getLevel() - 4, "," + _buf.toString()); } if (i == length - 2) { _buf.append("['").append(modelNext.getTitle()) .append("','").append(modelNext.getUrl()).append( "'").append(SUFFIX).append(COMMA); } } } return buf.toString(); } private static final String SUFFIX = "]"; private static final String COMMA = ","; private static final String PLACEKICK = "$martin"; private static final String HEADER = "var TREE_ITEMS = [['索引','#'," + PLACEKICK + "]];"; }
test 一下:
logger.debug("writing file:" + GeneratorTree.TREE_FILE); FileWriter writer = new FileWriter(GeneratorTree.TREE_FILE); writer.write(GeneratorTree.generator()); writer.flush(); writer.close(); logger.debug("end");
菜单js样本
一:
var TREE_ITEMS = [
['index', '#',
['001', '#001',
['001001', '#001001',
['001001001', '#001001001'],
],
['001002', '#001002',
['001002001', '#001002001',
['001002002', '#001002002'],
],
],
['001003', '#001001003',
['001003001', '#001003001',
['001003001001', '#001003001001'],
['001003001002', '#001003001001',
['001003001002001', '#001003001002001'],
],
],
],
],
['002', '#002'],
]
];
相关推荐
在IT领域,树形目录菜单生成器是一种常见且实用的工具,尤其在Web开发中,用于构建层次清晰、易于导航的菜单系统。本项目提供的是一款JavaScript版本的树形目录菜单生成器,它可以帮助开发者轻松地将层级结构的数据...
网页菜单生成器是一种工具,主要用于帮助开发者快速、高效地创建和自动生成用于网站的导航菜单代码。这种工具通常提供可视化界面,使得用户无需深入理解HTML、CSS或JavaScript等编程语言,也能轻松构建出功能完善的...
在网页设计领域,CSS(Cascading Style Sheets)菜单生成器是一种非常实用的工具,它可以帮助开发者快速、高效地创建出美观且响应式的导航菜单。CSS菜单生成器通过图形用户界面,让用户无需深入理解复杂的CSS代码,...
### 下拉菜单生成器:ASP实现与应用 在网页设计与开发领域,下拉菜单作为一项重要的用户交互元素,被广泛应用于导航、筛选、表单填写等场景中。本篇文章将深入探讨“下拉菜单生成器”的核心概念,以及如何通过ASP...
QuickMenu菜单生成工具是一款专为网页开发者设计的实用软件,旨在简化网页菜单的创建过程。通过其直观的图形用户界面,用户可以轻松地构建出结构清晰、样式丰富的导航菜单,并自动生成对应的CSS样式表和HTML代码。这...
《深入理解树状菜单生成器Treemaker》 在网页设计中,树状菜单是一种常见的交互元素,它能够清晰地展示层级关系,使用户更高效地浏览和操作网站内容。Treemaker是一款专门用于生成树状导航菜单的工具,以其强大的...
而"一个很不错的Js菜单生成工具"就是专门用于创建这种交互式菜单的工具。 这个工具能够自动生成由JavaScript和CSS(层叠样式表)组成的菜单。JavaScript负责菜单的动态行为,如响应用户的点击事件、动画效果等;CSS...
本教程通过“菜单生成器”这个实例,深入浅出地讲解了元组的基本概念、创建方法以及常用操作。 首先,元组是一个不可变序列,这意味着一旦创建,它的内容就不能被修改。这与列表(list)形成鲜明对比,后者是可变的...
《菜单生成工具——历史最牛的菜单生成工具详解》 在IT行业中,高效且功能强大的工具往往是提升工作效率的关键。"菜单生成工具"就是这样一款被赞誉为“历史最牛”的利器,它专注于帮助开发者快速创建和管理各种应用...
Js菜单生成工具(DIV CSS菜单在线生成器),包括生成一些圆角的菜单,十分方便,用起来也十分方便。用它生成的菜单无论是在功能或是外观方面都很不错,而且兼容各大浏览器,生成的菜单你可直接复制代码文件就可使用...
在这个“Pro/TOOLKIT 二次开发 多主菜单生成”的主题中,我们将深入探讨如何利用Pro/TOOLKIT在Creo 2.0环境中通过Visual Studio 2010来创建和管理多个主菜单。 首先,理解Pro/TOOLKIT的基础概念至关重要。它是用...
CSS菜单生成器是网页开发者和设计师的得力工具,它可以帮助用户快速创建出各种各样的交互式菜单,而无需手动编写复杂的CSS代码。这种工具极大地提高了工作效率,降低了出错的可能性。 "css菜单生成器"的主要功能...
在IT领域,动态菜单生成和自动生成菜单是一个重要的实践应用,尤其在开发Web应用程序时,这一功能能够极大地提高用户体验和管理效率。动态菜单基于用户的权限、角色或特定条件进行生成,使得用户界面更加灵活和定制...
为了满足这一需求,网页菜单生成软件应运而生,它让构建专业的网页导航菜单变得简单快捷。 网页菜单生成软件的出现,是为了解决传统网页菜单设计和开发过程中遇到的诸多挑战。首先,传统的方法要求开发者具备深入的...
网页菜单生成工具是一种高效、便捷的开发资源,用于帮助网页设计师和前端开发者快速创建和定制交互式的导航菜单。本文将详细介绍“一个非常捧的网页菜单生成工具”及其特点,以及如何利用这种工具来提升网页设计的...
《树形目录菜单生成器v1.0:深入解析与应用》 在信息化时代,用户界面的友好性和操作效率成为了衡量软件质量的重要标准之一。树形目录菜单作为一种直观、高效的导航工具,广泛应用于各类软件和网站中。本文将详细...
**Access菜单生成器详解** 在Microsoft Access数据库应用开发中,设计用户友好的界面是至关重要的。Access菜单生成器是一款高效实用的工具,旨在简化开发者在创建Access应用程序时手动编写菜单代码的过程,从而提高...
**menumake——一款强大的菜单生成工具** 在网页开发中,菜单系统是用户界面不可或缺的一部分,它为用户提供清晰的导航路径。"menumake"就是这样一款专业的菜单生成工具,专为JavaScript开发者设计,帮助他们快速、...
"CSS中文菜单生成器"是一个工具,它允许开发者快速、便捷地创建具有多种样式的中文菜单,以提升网站的用户体验和导航效率。这个生成器简化了CSS菜单的设计过程,尤其对于不熟悉CSS语法的初学者来说,它非常实用。 ...
在网页设计领域,CSS(Cascading Style Sheets)菜单生成器是不可或缺的工具,它能够帮助开发者快速、高效地创建出美观且响应式的导航菜单。本文将深入探讨CSS菜单生成器的重要性和使用方法,以及如何利用它来优化...