java树状图_请问这个树状图在Java中应该怎么做?

这篇博客介绍了如何构建一个部门组织树的数据结构,包括`Tree`类的定义,以及`TreeUtil`工具类的实现,用于将节点数据转化为树形结构。在业务层,提供了一个`buildTrees`方法来构建菜单树,最后通过`TreeUtil`构建出完整的部门树,并将其放入结果映射中供后续使用。
摘要由CSDN通过智能技术生成

打个e68a84e8a2ad3231313335323631343130323136353331333431373231比方

可以写一个Tree的类

public class Tree extends BaseDomain {

private String id;

private String key;

private String icon;

private String title;

private String value;

private String text;

private String code;

private String mtype;

private String type;

/**

* 部门的特殊个别字段

* 1.部门 / 2.岗位 的编码

*/

private String number;

private Double order;

private Double sort;

private String href;

private String component;

private List> children;

private String parentId;

private boolean hasParent = false;

private boolean hasChildren = false;

private Date createTime;

private Date modifyTime;

public void initChildren(){

this.children = new ArrayList<>();

}

}

在写一个工具类

public class TreeUtil {

protected TreeUtil() {

}

private final static String TOP_NODE_ID = "0";

/**

* 用于构建菜单

*

* @param nodes nodes

* @param  

* @return Tree

*/

public static Tree build(List> nodes) {

if (nodes == null) {

return null;

}

List> topNodes = new ArrayList<>();

nodes.forEach(node -> {

String pid = node.getParentId();

if (pid == null || TOP_NODE_ID.equals(pid)) {

topNodes.add(node);

return;

}

for (Tree n : nodes) {

String id = n.getId();

if (id != null && id.equals(pid)) {

if (n.getChildren() == null)

n.initChildren();

n.getChildren().add(node);

node.setHasParent(true);

n.setHasChildren(true);

n.setHasParent(true);

return;

}

}

if (topNodes.isEmpty())

topNodes.add(node);

});

Tree root = new Tree<>();

root.setId("0");

root.setParentId("");

root.setHasParent(false);

root.setHasChildren(true);

root.setChildren(topNodes);

root.setText("root");

return root;

}

}

写完了这两个在写业务层

一个构建书的方法

private void buildTrees(List> trees, List menus, List ids) {

menus.forEach(menu -> {

ids.add(menu.getId().toString());

Tree tree = new Tree<>();

tree.setId(menu.getId().toString());

tree.setKey(tree.getId());

tree.setParentId(menu.getParentId().toString());

tree.setText(menu.getName());

tree.setTitle(tree.getText());

tree.setIcon(menu.getIcon());

tree.setComponent(menu.getComponent());

tree.setCreateTime(menu.getCreateTime());

tree.setCreateTime(menu.getCreateTime());

tree.setHref(menu.getHref());

tree.setSort(menu.getSort());

tree.setCode(menu.getCode());

tree.setMtype(menu.getMtype());

trees.add(tree);

});

}

Map result = new HashMap<>();

List depts = findDepts(dept, request);

List> trees = new ArrayList<>();

buildTrees(trees, depts);

Tree deptTree = TreeUtil.build(trees);

result.put("rows", deptTree);

result.put("total", depts.size());

Java漂亮的树形菜单制作实例(源码),森林状的关系图,文本域,用于显示点击的节点名称,使用了JTree,可以看作是一个jTree的用法演示实例。树形菜单应用广泛,这个Tree制作漂亮,相信会让很多朋友从学习到实现的方法,效果如演示截图所示。下面是相关的代码片段:   DefaultMutableTreeNode root = new DefaultMutableTreeNode("设置"); //生成根节点   DefaultMutableTreeNode node1=new DefaultMutableTreeNode("常规"); //生成节点一   node1.add(new DefaultMutableTreeNode("默认路径")); //增加新节点到节点一上   node1.add(new DefaultMutableTreeNode("保存选项"));   root.add(node1); //增加节点一到根节点上   root.add(new DefaultMutableTreeNode("界面"));   root.add(new DefaultMutableTreeNode("提示声音"));   root.add(new DefaultMutableTreeNode("打印"));   JTree tree = new JTree(root); //得到JTree的实例   DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer)tree.getCellRenderer(); //得到JTree的Renderer   renderer.setLeafIcon(null); //设置叶子节点图标为空   renderer.setClosedIcon(null); //设置关闭节点的图标为空   renderer.setOpenIcon(null); //设置打开节点的图标为空   tree.addTreeSelectionListener(new TreeSelectionListener() {//选择节点的事件处理   public void valueChanged(TreeSelectionEvent evt) {   TreePath path = evt.getPath(); //得到选择路径   String info=path.getLastPathComponent().toString(); //得到选择的节点名称   jtfInfo.setText(info); //在文本域显示名称   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值