请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

【xmind】 使用 Java 生成思维导图

[复制链接]
查看: 98|回复: 0

1万

主题

2万

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
47993
发表于 2019-12-4 01:13 | 显示全部楼层 |阅读模式
【xmind】 使用 Java 生成思维导图  游戏 746311-20191203213337951-253017215

前言

在一样平常的工作与进修中,我们经常会利用脑筋导图这个工具,来把笼统而又无形的思考转换成无形而且具体的图像,是理清思绪,梳理逻辑的一大神器。
正确的说,脑筋导图并不是一个具体的工具,而是一种方式。是道而不是术。现实落地时,我们凡是还需要借助内部的工具。从最原始的纸和笔,到各类软件,可以说是利用尽有。现在我在利用的是 xmind 这款软件,下面就会以 xmind 为前言间接的经过 Java 代码画脑筋导图。
放码过来

经过目录天生脑筋导图

我在看书的时候有一个风尚,先经过甚脑导图画出一本书的纲领,然后经过这个纲领来分主次的去阅读。大要有些同学感应迷惑,还没读过书,怎样了解纲领呢?实在一本书的目录就是这本书最好的纲领。
本文经过把一个目录天生脑筋导图的例子来进修 xmind 底子的 api 利用。固然假如想系统进修的同学,可以参考文末给出的官方 api 链接。下图就是我们趾Λ要天生的结果。
【xmind】 使用 Java 生成思维导图  游戏 746311-20191203213343481-1399575713

引入依靠

xmind 最起头是在 eclipse 上举行定制斥地而来(对,这个 eclipse 就是你在碰到 idea 后,见异思迁抛弃的那个编程软件),所以天生就对 Java 有杰出的支持。这个地址就是 xmind 在 github 上的仓库。对 xmind 的操纵的 api 全在org.xmind.core 包下,按官方提醒把代码拉下来在当地打个包,再引入就 ok 了。可是呢?偷懒是第平生产力。立马跑到 maven 仓库搜索了一下,发现公然有人把官方的打包上传了,间接琶来利用。(时候有点老,可是底子操纵已经够了,假如想用新功用,可以拉代码自行打包)

  • pom.xml
  1.   com.github.eljah  xmindjbehaveplugin  0.8
复制代码
预备数据

我们要天生脑筋导图,首先得稀有据。这里的数据就是一本书的目录。
首先,书籍我选的是《一本书读懂24种互联网脑筋》,选这本书,并不是由于这本书有多好,而是由于他比力典型,典型就典型在,看过这本书的目录后就没有必要再读这本书了,由于目录已经把要说的内容说的很清楚了。
那晓得书名,怎样获得书的目录呢?很简单,翻开豆瓣,找到这本书的详情,里面就有书籍的目录,间接把它 copy 下来便可以了,目录以下图。
【xmind】 使用 Java 生成思维导图  游戏 746311-20191203213344563-1859209047

起头编码


  • GeneratorDoubanXmind
  1. /* * *  * * *  *  * blog.coder4j.cn *  *  * Copyright (C) 2016-2019 All Rights Reserved. *  * * */package cn.coder4j.study.example;import cn.hutool.core.io.FileUtil;import cn.hutool.core.util.ReUtil;import cn.hutool.system.SystemUtil;import com.google.common.collect.Lists;import org.xmind.core.Core;import org.xmind.core.CoreException;import org.xmind.core.ISheet;import org.xmind.core.ITopic;import org.xmind.core.IWorkbook;import org.xmind.core.IWorkbookBuilder;import java.io.IOException;import java.util.ArrayList;import java.util.List;/** * @author buhao * @version GeneratorDoubanXmind.java, v 0.1 2019-12-02 22:54 buhao */public class GeneratorDoubanXmind {    /**     * 当前类途径     */    public static final String CLASS_PATH = GeneratorDoubanXmind.class.getResource("/").getPath();    /**     * 文件分隔符     */    public static final String FILE_SEPARATOR = SystemUtil.getOsInfo().getFileSeparator();    public static void main(String[] args) throws IOException, CoreException {        // 读取目录        String bookName = "一本书读懂24种互联网脑筋";        List contents = FileUtil.readLines(CLASS_PATH + bookName + ".txt", "utf-8");        // 建立脑筋导图的工作空间        IWorkbookBuilder workbookBuilder = Core.getWorkbookBuilder();        IWorkbook workbook = workbookBuilder.createWorkbook();        // 获得默许sheet        ISheet primarySheet = workbook.getPrimarySheet();        // 获得根主题        ITopic rootTopic = primarySheet.getRootTopic();        // 设备根主题的题目        rootTopic.setTitleText(bookName);        // 章节 topic 的列表        ArrayList chapterTopics = Lists.newArrayList();        for (String content : contents) {            // 假如是数字开首为章节称号            if (ReUtil.isMatch("^[1-24].*?", content)) {                // 建立章节节点                ITopic topic = workbook.createTopic();                topic.setTitleText(content);                chapterTopics.add(topic);            } else {                // 建立小节节点                ITopic topic = workbook.createTopic();                topic.setTitleText(content);                chapterTopics.get(chapterTopics.size() - 1).add(topic, ITopic.ATTACHED);            }        }        // 把章节节点增加到要节点上        chapterTopics.forEach(it -> rootTopic.add(it, ITopic.ATTACHED));        // 保存        workbook.save(CLASS_PATH + FILE_SEPARATOR + bookName + ".xmind");    }}
复制代码
代码分析

底子上代码都做了表白,对于焦点代码再简单分析一下。
  1.         // 读取目录        String bookName = "一本书读懂24种互联网脑筋";        List contents = FileUtil.readLines(CLASS_PATH + bookName + ".txt", "utf-8");
复制代码
首先前两行不必说,我把目录数据保存到了 resources 目录下的 一本书读懂24种互联网脑筋.txt,这两行代码就是简单读取数据。
  1.         // 建立脑筋导图的工作空间        IWorkbookBuilder workbookBuilder = Core.getWorkbookBuilder();        IWorkbook workbook = workbookBuilder.createWorkbook();
复制代码
然后的两行代码,经过 Core 类建立工作空间构建者类,再经过它的createWorkbook 方式建立出一个空缺的工作空间,这个建立完就会获得一个没有任何节点的空缺导图。
  1.         // 获得默许sheet        ISheet primarySheet = workbook.getPrimarySheet();        // 获得根主题        ITopic rootTopic = primarySheet.getRootTopic();        // 设备根主题的题目        rootTopic.setTitleText(bookName);
复制代码
再接着,经过刚刚建立 工作空间 获得主 sheet,这个 sheet 跟 excel 的概念差不多,就像欣赏器的一个 tab 一样。结果以下图
【xmind】 使用 Java 生成思维导图  游戏 746311-20191203213345077-277685999

此外还经过主 sheet 获得了根 topic,并设备他的题目为书名,它对应下图
【xmind】 使用 Java 生成思维导图  游戏 746311-20191203213345521-567378362
  1.         // 章节 topic 的列表        ArrayList chapterTopics = Lists.newArrayList();        for (String content : contents) {            // 假如是数字开首为章节称号            if (ReUtil.isMatch("^[1-24].*?", content)) {                // 建立章节节点                ITopic topic = workbook.createTopic();                topic.setTitleText(content);                chapterTopics.add(topic);            } else {                // 建立小节节点                ITopic topic = workbook.createTopic();                topic.setTitleText(content);                chapterTopics.get(chapterTopics.size() - 1).add(topic, ITopic.ATTACHED);            }        }
复制代码
这段代码比力多,可是重点是建立 topic 的操纵,每个 topic 就是脑筋导图的一个节点,可以经过workbook.createTopic() 来建立,一样的经过setTitleText 设备题目。这段代码实在是分析了目录的纪律,有1-24开首的是大章节,尔后背紧跟的是小章节,一个大章节下是多个小章节(可以看上面的目录截图)。所以判定是大章节就建立一个新的节点,判定是小章节就往末端一个大章节上增加(经过 add 方式)。
  1.         // 把章节节点增加到要节点上        chapterTopics.forEach(it -> rootTopic.add(it, ITopic.ATTACHED));
复制代码
适才说了把小章节都增加到了大章节上了,可是大章节现在照旧无依无靠的,所以经过一个循环全数增加到了根 Topic 上。
  1.         // 保存        workbook.save(CLASS_PATH + FILE_SEPARATOR + bookName + ".xmind");
复制代码
到此我们编码竣事了,可是这些操纵还在内存中,我们需要经过 workbook 的 save 方式把文件保存到硬盘上,此外文件后缀记得改成 xmind,否则软件没法识别。
此外

说明

由于篇幅有限,没法贴完全数代码,如碰到题目可到关连链接里面的 example 上,检察源码。
关连链接

【xmind】 使用 Java 生成思维导图  游戏 746311-20191203213345779-2084717141


免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 妈妈网-中国妈妈第一,是怀孕、育儿、健康等知识交流传播首选平台 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表