您的位置 首页 java

「超好用API 推荐」用Java生成Xmind脑图

关于 脑图

脑图,也叫 思维导图 ,它的出现给我们的工作和生活带来很大的便捷,可以帮助我们更快的理解一些复杂的事务,捋清楚其中的逻辑。我们常见的可能是技术学习类脑图,测试一般也会有关于测试分析的脑图,对于一些影视爱好者,也会用脑图来分析各个人物的错综复杂的关系。

现在,世面上的脑图工具,除了大家常用的,还有很多,并且使用人数也很多,比如可在线绘制的ProcessOn,百度脑图,还有可安装本地,支持云同步的亿图脑图,也就是 MindMaster

「超好用API 推荐」用Java生成Xmind脑图

「超好用API 推荐」用Java生成Xmind脑图

「超好用API 推荐」用Java生成Xmind脑图

这些思维导图工具,基本功能都差不多,但是各自也有特色功能。这些我都有体验过,就一些基础而言,还是 Xmind 免费体验就够用,百度脑图git上有项目kityminder,可以拿来自己改改本地用,MindMaster比较好一点,支持水印,就是可能要收费,可以自己科学上网搞定一下。

但是,如果说,我想用Java生成脑图怎么弄?目前只有一个答案,就是用Xmind的提供的API,虽然可能版本比较老,但是基本够用。(大家要是还有其他好的资源,分享一下啦:tiaopi:)

Xmind API介绍

xmind git地址:

「超好用API 推荐」用Java生成Xmind脑图

下面我们介绍一下关于Xmind Api:

Xmind 提供创建、操作、保存思维导图的功能,这些功能的接口都在核心组件 org.xmind.core 中定义,这里放几个核心的接口:

  • org.xmind.core.IWorkbook – 代表一个完整的思维导图,其中可能包括多个工作表和样式信息,以及图像、附件和其他文件。
  • org.xmind.core.ISheet – 代表思维导图中的单个工作表。每张纸都有一个中心主题。
  • org.xmind.core.ITopic – 代表思维导图上工作表中的一个主题。一个主题只有一个父主题(除非它是工作表的中心主题),并且许多主题有任意数量的子主题。除了这些主界面之外,还有几个用于特定目的。其中一些是:
  • org.xmind.core.IRelationship – 代表任意两个主题之间的关系
  • org.xmind.core.IControlPoint – 表示用于设置曲线的关系上的一个点
  • org.xmind.core.IBoundary – 一组相邻主题
  • org.xmind.core.ISummary – 类似于边界,但附加了一个主题节点
  • org.xmind.core.INumbering – 附加到主题及其子项的编号模式
  • org.xmind.core.ITopicExtension – 允许将自定义扩展添加到主题
  • org.xmind.core.IManifest – 控制用于添加附件的 xmind 文档清单
  • org.xmind.core.marker.IMarker – 小图标添加到主题
  • org.xmind.core.marker.IMarkerRef – 参考标记
  • org.xmind.core.marker.IMarkerResource – 用于标记图标图像的资源

最后,还有一些需要静态方法和字段的基类:

  • org.xmind.core.Core – 通用事件定义,以及用于实例化许多接口的静态方法
  • org.xmind.core.util.Point – 用于设置分离主题的坐标
  • org.xmind.ui.style.Styles – 包含属性和值的所有样式定义

如果是创建一个基础的脑图,那么,我们就需要通过 I workbook Builder 界面,创建一个工作簿 IWorkbook IWorkbook 提供默认的工作表 ISheet ,每一个 ISheet 都有一个根主题 ITopic ,然后可以通过 IWorkbook 创建新主题,并通过 ITopic 里面的 add 方法,对主题进行关联。

结构:

Xmind 有多种类型的结构可用于显示地图等信息。

设置这些值的方法很简单,但是需要在 API 中填写完整的类名,通过 ITopic setStructureClass(String classname) 方法,传入结构的类名即可。

例如:

 topic.setStructureClass("org.xmind.ui.fishbone.leftHeaded");  

下表列出了各种可用的结构,以及每个结构的类。

结构类型

结构类名

地图(默认)

“”-空字符串

左头鱼骨

org.xmind.ui.fishbone.leftHeaded

右头鱼骨

org.xmind.ui.fishbone.rightHeaded

左逻辑图

org.xmind.ui.logic.left

正确的逻辑图

org.xmind.ui.logic.right

向下组织图

org.xmind.ui.org-chart.down

向上组织图

org.xmind.ui.org-chart.up

电子表格

org.xmind.ui.spreadsheet

左树

org.xmind.ui.tree.left

右树

org.xmind.ui.tree.right

浮动

org.xmind.ui.map.floating

超链接:

可以设置三种超链接:

  • 网址
  • 话题
  • 附件(文件)

网址: topic2.set Hyperlink (“”); // URL

话题: topic1.seHyperlink(“xmind:#” + topic2.getId()); // topic

topicID 是主题的内部 ID,但是注意这个id每次加载会重新生成。

附件: topic3.setHyperlink(“xap:attachments/filename”); // attachment

附件要求文件放在xmind文档中。

笔记

要创建新笔记,首先创建一个 INotesContent ,它有两种类型 – IPlainNotesContent IHtmlNotesContent 。一个 INotes 对象从主题获得。如果该主题上设置了注释,则返回该注释。否则,将创建一个新对象并将其附加到该主题。

 IPlainNotesContent plainContent = (IPlainNotesContent) workbook.createNotesContent(INotes.PLAIN);
plainContent.setTextContent("This is the note");
INotes notes = topic1.getNotes();
notes.setContent(INotes.PLAIN, plainContent);  

除此之外,还提供了 编号、标签、设置风格、附件、图片、标记、边界、总结、扩展主题、寻找话题、关系 等方法,大家可以根据需要自行查看。

创建Xmind脑图

1、添加依赖

         <dependency>
            <groupId>com.github.eljah</groupId>
            <artifactId>xmindjbehaveplugin</artifactId>
            <version>0.8</version>
        </dependency>  

2、创建脑图

这里创建,我们可以简单写一张脑图,实际应用中,一般是结合递归,实现整个逻辑。比如,你想知道一个文件夹下的所有文件结构,你想把一本书根据目录生成一个脑图……

我在工作中的应用,是扫描代码,然后生成接口和方法之间的调用链,将扫描的链路保存在一个对象中,然后根据需要把它结构化,最后生成调用链。

如图(考虑信息安全,部分接口名称打码):

简单写个Demo:

 package com.hundsun.broker;

import org.xmind.core.*;

import java.io.IOException;
import java.util.ArrayList;

/**
 * @author 悠悠做神仙
 * @version 1.0.0
 * @ProjectName yyzsxDemo
 * @ClassName CreateXmind.java
 * @Description TODO
 * @createTime 2021年08月26日 18:32:00
 */
public class CreateXmind {

    public static void main(String[] args) throws CoreException, IOException {
        String root = "演示脑图";
        String xmindPath = "./demo.xmind";
        createXmind(root, xmindPath);
    }


    public static void createXmind(String root, String path) throws CoreException, IOException {

        // 创建思维导图的工作空间
        I Workbook Builder workbookBuilder = Core.getWorkbookBuilder();
        IWorkbook workbook = workbookBuilder.createWorkbook();

        // 获得默认sheet
        ISheet primarySheet = workbook.getPrimarySheet();

        // 获得根主题
        ITopic rootTopic = primarySheet.getRootTopic();
        // 设置根主题的标题
        rootTopic.setTitleText(root);
        //正确的逻辑图 org.xmind.ui.logic.right
        rootTopic.setStructureClass("org.xmind.ui.logic.right");
        //创建所有节点的集合
        ArrayList<ITopic> chapterTopics = new ArrayList<>();
        //创建一级主题
        ITopic topic = workbook.createTopic();
        //给主题设置标题名称
        topic.setTitleText("第一个,一级节点");
        chapterTopics.add(topic);


        //创建一级主题第二个
        ITopic topic1 = workbook.createTopic();
        //给主题设置标题名称
        topic1.setTitleText("第二个,一级节点");
        //父主题需要直接加到结合里面,后面会一起和跟节点关联
        chapterTopics.add(topic1);

        //设置二级主题,关联到第二个一级节点
        ITopic topicSecond = workbook.createTopic();
        topicSecond.setTitleText("二级节点");
        /*二级节点是一级节点的子节点,所以可以直接进行关联(这里因为父节点刚加进去,所以坐标应该是size-1),无需add
        节点提供三种关联关系:
           String ATTACHED = "attached";
           String DETACHED = "detached";
           String SUMMARY = "summary";
         */
        chapterTopics.get(chapterTopics.size() - 1).add(topicSecond, ITopic.ATTACHED);


        //给二级节点设置笔记
        IPlainNotesContent plainContent = (IPlainNotesContent) workbook.createNotesContent(INotes.PLAIN);
        String content = "我是笔记内容";
        plainContent.setTextContent(content);
        INotes notes = topicSecond.getNotes();
        notes.setContent(INotes.PLAIN, plainContent);
        //把所有一级节点都加到根节点上
        chapterTopics.forEach(it -> rootTopic.add(it, ITopic.ATTACHED));

        workbook.save(path);
    }

}  

我们执行一下,看一下效果:

大功告成了,输出确实简单了点,主要是为了演示,工作中大家可以结合实际,生成需要的脑图结构!

文章来源:智云一二三科技

文章标题:「超好用API 推荐」用Java生成Xmind脑图

文章地址:https://www.zhihuclub.com/187368.shtml

关于作者: 智云科技

热门文章

网站地图