предисловие
В нашей повседневной работе и учебе мы часто используем инструмент интеллект-карты для преобразования абстрактного и неосязаемого мышления в осязаемые и конкретные образы.
Если быть точным, майндмэппинг — это не конкретный инструмент, а метод. Это Дао, а не искусство. При фактической посадке нам обычно приходится использовать внешние инструменты. От самой примитивной бумаги и ручки до всех видов программного обеспечения, можно сказать, что есть все виды приложений. В настоящее время я использую программное обеспечение xmind.В дальнейшем я буду использовать xmind в качестве средства для рисования ментальных карт косвенно через код Java.
Оценка более
Создавайте интеллект-карты из каталогов
Когда я читаю книгу, у меня есть привычка рисовать план книги через ментальную карту, а затем читать ее в приоритетном и подчиненном порядке по этому плану. Некоторые ученики могут запутаться, как понять конспект, если они еще не читали книгу? На самом деле, оглавление книги — это лучший план книги.
В этой статье рассказывается об основном использовании API xmind путем создания карты разума из каталога. Конечно, если вы хотите учиться систематически, вы можете обратиться к официальной ссылке API, указанной в конце статьи. На рисунке ниже показан окончательный результат, который мы хотим получить.
импортировать зависимости
xmind изначально разрабатывался на eclipse (да, это eclipse — программное обеспечение для программирования, от которого вы отказались после того, как столкнулись с идеей), поэтому по своей природе он имеет хорошую поддержку Java. этоадресЭто репозиторий xmind на github. API для операций xmind находится в пакете org.xmind.core.Следуйте официальной подсказке, чтобы извлечь код и создать пакет локально, а затем импортировать его, и все в порядке. но? Лень — главная производительная сила. Сразу же побежал на склад maven для поиска и обнаружил, что кто-то загрузил официальный пакет и использовал его напрямую. (Время немного устарело, но базовых операций достаточно. Если вы хотите использовать новые функции, вы можете вытащить код и запаковать его самостоятельно)
- pom.xml
<dependency>
<groupId>com.github.eljah</groupId>
<artifactId>xmindjbehaveplugin</artifactId>
<version>0.8</version>
</dependency>
Подготовить данные
Чтобы создать интеллект-карту, мы должны сначала получить данные. Данные здесь представляют собой оглавление книги.
Прежде всего, я выбираю книгу "Книга читает 24 вида интернет-мышления", я выбрал эту книгу не из-за того, насколько хороша книга, а потому, что она типична, типична типична, после прочтения каталога этой книги нет необходимости читать эту книгу еще раз, потому что каталог уже есть. ясно, что вы хотите сказать.
Итак, как узнать название книги, как получить каталог книги? Это очень просто, откройте Douban, найдите детали книги, есть каталог книги, просто скопируйте его напрямую, каталог показан ниже.
начать кодирование
- GeneratorDoubanXmind
/*
*
* * *
* * * 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<String> 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<ITopic> 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");
}
}
анализ кода
В основном код аннотируется, а основной код кратко анализируется.
// 读取目录
String bookName = "一本书读懂24种互联网思维";
List<String> contents = FileUtil.readLines(CLASS_PATH + bookName + ".txt", "utf-8");
Прежде всего, само собой разумеется первые две строки, я сохранил данные каталога в книгу под каталогом ресурсов, чтобы читать 24 вида интернет-мышления.txt, эти две строки кода просто читать данные.
// 创建思维导图的工作空间
IWorkbookBuilder workbookBuilder = Core.getWorkbookBuilder();
IWorkbook workbook = workbookBuilder.createWorkbook();
Затем две строки кода, создайте класс построителя рабочей области с помощью класса CORE и создайте пустую рабочую область с помощью его метода CreateWorkbook.Это создание получит пустую карту без каких-либо узлов.
// 获得默认sheet
ISheet primarySheet = workbook.getPrimarySheet();
// 获得根主题
ITopic rootTopic = primarySheet.getRootTopic();
// 设置根主题的标题
rootTopic.setTitleText(bookName);
Затем получите основной лист, просто создав рабочее пространство.Этот лист похож на концепцию Excel, точно так же, как вкладка в браузере. Эффект следующий
Кроме того, корневая тема получается через основной лист, а ее название устанавливается как название книги, что соответствует следующему рисунку
// 章节 topic 的列表
ArrayList<ITopic> 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);
}
}
В этом разделе много кода, но основное внимание уделяется операции создания тем.Каждая тема является узлом ментальной карты, которую можно создать через workbook.createTopic(), а также через setTitleText для установки заголовка . Этот код фактически анализирует правила каталога.В начале 1-24 есть большие главы, за которыми следуют маленькие главы, а за большой главой следует несколько маленьких глав (см. скриншот каталога выше). Таким образом, если будет определена большая глава, будет создан новый узел, а если будет определена небольшая глава, он будет добавлен к последней большой главе (через метод add).
// 把章节节点添加到要节点上
chapterTopics.forEach(it -> rootTopic.add(it, ITopic.ATTACHED));
Я просто сказал, что маленькие главы добавляются к большим главам, но большие главы все равно беспомощны, поэтому все они добавляются в корневую тему через цикл.
// 保存
workbook.save(CLASS_PATH + FILE_SEPARATOR + bookName + ".xmind");
На этом наше кодирование закончено, но эти операции все еще в памяти.Нам нужно сохранить файл на жесткий диск с помощью метода сохранения рабочей книги, и не забудьте изменить суффикс файла на xmind, иначе программа не будет работать. признать это.
разное
инструкция
Из-за нехватки места не все закончили код, если у вас есть вопросы, связанные ссылки доступны внутри примера, чтобы просмотреть исходный код.