当前位置: 首页 > news >正文

wordpress主题 苏醒百度seo排名如何提升

wordpress主题 苏醒,百度seo排名如何提升,php ajax网站开发典型实例pdf,网站被提示危险网站文章目录1、UI组件/依赖库选择。1.1、左侧Markdown编辑区UI组件选择。1.2、webview组件选择1.3、markdown转html开源库选择。2、核心技术实现2.1、左侧Markdown编辑区实现2.2、右侧webview预览实现2.3、markdown转html实现3、运行效果3.1、界面展示1、UI组件/依赖库选择。 编辑…

文章目录

    • 1、UI组件/依赖库选择。
      • 1.1、左侧Markdown编辑区UI组件选择。
      • 1.2、webview组件选择
      • 1.3、markdown转html开源库选择。
    • 2、核心技术实现
      • 2.1、左侧Markdown编辑区实现
      • 2.2、右侧webview预览实现
      • 2.3、markdown转html实现
    • 3、运行效果
      • 3.1、界面展示

1、UI组件/依赖库选择。

编辑器采用左右分割布局,左侧为Markdown编辑区,右侧为实时预览区,相关组件或依赖选择现成的开源库整合实现,减少开发成本。

1.1、左侧Markdown编辑区UI组件选择。

网上找了一下,仅发现RSyntaxTextArea https://github.com/bobbylight/rsyntaxtextarea这个组件比较适合。
RSyntaxTextArea的功能::

  • 现成的文本编辑界面
  • Markdown语法高亮显示
  • 可定制的编辑功能
  • 开源免费使用

1.2、webview组件选择

要创建markdown编辑,需要一个webview组件,在java里面可用的webview组件有:

  1. javafx.scene.web.WebView,开源免费,基于webkit内核
  2. jcef,开源免费,基于Chromium
  3. JxBrowser,商业收费,基于Chromium
    在考虑免费和整合方便上,选择了javafx.scene.web.WebView。

1.3、markdown转html开源库选择。

  1. CommonMark-java

    • 基于CommonMark规范实现
    • 轻量级,易于集成
    • 支持标准Markdown语法
  2. Flexmark-java

    • 功能丰富的Markdown处理器
    • 支持CommonMark和GitHub Flavored Markdown
    • 可扩展性强,支持自定义扩展
  3. Markdown4j

    • 简单易用的Markdown解析器
    • 基于JavaScript的markdown.js移植
    • 适合基本的Markdown转换需求
  4. Txtmark

    • 轻量级Markdown处理器
    • 性能较好
    • 支持基本Markdown语法

Flexmark-java支持最完整,选择了它。

2、核心技术实现

2.1、左侧Markdown编辑区实现

编辑区采用RSyntaxTextArea,初始化代码如下:

   // 初始化面板private void initPanel() {textArea = new RSyntaxTextArea();textArea.setCodeFoldingEnabled(true);textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_MARKDOWN);textArea.setAntiAliasingEnabled(true);textArea.setFont(Config.getFont());textArea.setLineWrap(Config.isIsLineWrap());textArea.addCaretListener(e -> {try{int pos = textArea.getCaretPosition();//获取行数int row = textArea.getLineOfOffset(pos) + 1;//获取列数int col = pos - textArea.getLineStartOffset(row - 1) + 1;rowValueLabel.setText(String.valueOf(row));columnValueLabel.setText(String.valueOf(col));}catch(Exception ex){log.log(Level.SEVERE, "   无法获得当前光标位置 ", ex);}});scrollPane = new RTextScrollPane(textArea);this.add(scrollPane, BorderLayout.CENTER);}

2.2、右侧webview预览实现

预览区采用javafx.scene.web.WebView,初始化代码如下:

private void initWebView(JFXPanel fxPanel){WebView webView = new WebView();webEngine = webView.getEngine();webEngine.setOnAlert((WebEvent<String> wEvent) -> {System.out.println("alert========: " + wEvent.getData());});webEngine.setOnError((WebErrorEvent wEvent) -> {System.out.println("error========: " + wEvent.getMessage());});String body = "";String markdown = textArea.getText();if (!StrUtil.isEmpty(markdown)){body = Markdown2Html.toHtml(markdown);}webEngine.loadContent(getHtml(body), "text/html");Scene scene = new Scene(new StackPane(webView));fxPanel.setScene(scene);}

2.3、markdown转html实现

左侧编辑区增加文本变动监听器,使用flexmark-java将Markdown文本转换为HTML,并通过WebView加载。关键步骤包括:

// 监听文本编辑,如果文本内容有更新,则将markdown转为html,并更新webview。
class MdDocumentListener implements DocumentListener {public void insertUpdate(DocumentEvent e) {}public void removeUpdate(DocumentEvent e) {}public void changedUpdate(DocumentEvent e) {String markdown = editor.getTextArea().getText();String html = Markdown2Html.toHtml(markdown);Platform.runLater(() -> {JSObject obj = (JSObject) webEngine.executeScript("window");obj.setMember("javaContent", html);webEngine.executeScript("addHtml(javaContent)");});}
}
public class Markdown2Html {private static Parser parser = null;private static HtmlRenderer renderer = null;public static String toHtml(String markdown) {MutableDataSet options = new MutableDataSet();options.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create(),FootnoteExtension.create(),TaskListExtension.create()));if (parser == null){parser = Parser.builder(options).build();renderer = HtmlRenderer.builder(options).build();}Node document = parser.parse(markdown);return renderer.render(document);}
}

3、运行效果

3.1、界面展示

启动应用后,界面呈现左右分割布局:左侧为支持语法高亮的文本编辑区,底部显示当前光标所在的行和列位置;右侧为实时渲染的预览区。
在这里插入图片描述

http://www.dtcms.com/a/419573.html

相关文章:

  • window pdf文件批量转高清图片png、jpg
  • 北京城乡建设门户网站凉州区住房城乡建设局网站
  • 安宝特案例丨从 “围台观摩” 到 “远程高清学”:安宝特AR远程医疗套装支撑南京医院手术带教
  • 在模板网站建站好吗网站制作公司网站
  • Parasoft C/C++test 测试中 main 函数重复定义解决方案
  • 还在靠人工筛选供应商?数据驱动选商更精准
  • 孟村县做网站价格seo站长工具查询系统
  • 平顶山网站建设价格wordpress自动抓取
  • 网站开发用什么语言最多专业免费建站
  • k8s中的schedule
  • 整合ITSM和IT安全!-ManageEngine卓豪
  • 从“人工”到“智能”:数字新基建驱动下的园区能源计费变革
  • 用dreamever如何建设网站做外贸的网站看啥书
  • 温州建设局网站首页鹿泉区建设局网站
  • 锤子助手插件功能八十一:笔记复读
  • 建设一个公司网站多少钱系统开发费
  • 自己如何做网站推广wordpress悬浮音乐播放器
  • .net操作Excel:图表 (Chart) 的创建与定制
  • 照明网站建设郴州旅游攻略
  • HardFault_Handler处理Bug
  • iterator()java面试题及答案
  • 黑龙江省建设厅网站的电话高端品牌型网站建设
  • 俄罗斯视频网站开发阳江专业手机网站制作公司
  • EasyGBS公网平台实时视频播放方案
  • Linux下网络通信中的超时设置(C语言 客户端/服务器实现)
  • 高明建网站服务甘南州城乡建设局网站
  • 深圳建设工程交易网站官网网络销售是什么工作内容
  • 不停服务快速创建一个MySQL从库
  • C# 使用应用RSA和ECC进行数字签名和签名验证
  • 靖江做网站的网站建设可行性研究报告