提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:吉伟伟|2024-12-27 11:19:45.570|阅读 3 次
概述:在本文中,我们将探讨如何通过使用 JxBrowser 和 Quill.js 将现代富文本编辑器嵌入到 Java 桌面应用程序中,来克服 Swing、JavaFX 和 SWT 中内置编辑器的局限性。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
JxBrowser是一个跨平台的 JVM 库,它允许您将基于 Chromium 的 Browser 控件集成到 Compose、Swing、JavaFX、SWT 应用程序中,并使用 Chromium 的数百种功能。
所有桌面工具包都提供文本编辑控件,从最基本的选项到更高级的选项。但是富文本编辑呢?是否有允许用户格式化文本和添加图片的控件?是否有可以在 Java 应用程序中使用的所见即所得编辑器?
在本文中,我们将探讨如何通过使用 JxBrowser 和 Quill.js 将现代富文本编辑器嵌入到 Java 桌面应用程序中来解决此问题。
Swing 和 JavaFX 中的内置编辑器功能有限,无法提供文本格式、样式和多媒体支持等高级功能。在处理大量数据或复杂文本结构时,它们的效率也很差。同时,SWT 根本不提供富文本编辑器。
在 Swing 中,目前有两个可用的文本编辑器:JRichTextEditor 和 TinyMCE。JRichTextEditor 已经九年没有更新了,最后一次在 GitHub 上提交也是在那时,而且它的文档已经过时了。另一方面,TinyMCE 是一个商业付费编辑器,默认情况下是基于云的。对于寻求免费替代方案的开发人员来说,像 Quill 或类似的解决方案可能是一个可行的选择,它们可以完全控制您的数据,而无需依赖外部服务器。
JavaFX 提供了两种富文本编辑器选项:RichTextFX 和 RichTextArea,这两种都是现代且维护良好的。它们是功能强大的工具包,可让您构建富文本编辑器,但需要相当多的 DIY 工作才能启动和运行。
SWT 依赖于操作系统提供的 UI 小部件,并且它没有内置的富文本编辑器,因为操作系统不提供此类小部件。Nebula RichText 提供了一种替代方案,但它作为嵌入 CKEditor 的浏览器组件而不是独立的编辑器。
虽然 Nebula RichText 是一种方法,但它使用内置浏览器组件,可能不适合专业用例。更灵活、更强大的选项是使用 JxBrowser,它允许您在 SWT 应用程序中嵌入浏览器,从而实现任何基于 Web 的所见即所得编辑器的顺利集成。
JxBrowser 支持集成现代基于 Web 的编辑器,从而克服了内置编辑器的局限性。在以下情况下,请选择 JxBrowser:
JxBrowser 嵌入 Web 应用程序的能力确保了 Quill 等工具的有效集成,提供强大的文本编辑功能、完全自定义以及跨 Swing、JavaFX 和 SWT 的兼容性。这种组合可在所有主要操作系统上运行,从而保持一致的用户体验。
在这篇博文中,我们将把 JxBrowser 添加到 Gradle 项目中。如果您使用的是其他构建系统,则可以使用我们的Maven 工件,将 JAR 文件添加到类路径,甚至创建独立的 Eclipse 插件。
要将 JxBrowser 添加到项目中,请应用 JxBrowser 插件并添加必要的依赖项:
plugins {
id("com.teamdev.jxbrowser") version "1.2.1"
}
jxbrowser {
version = "8.2.1"
}
dependencies {
// Add the dependency to JxBrowser integration with Swing.
//
// Also, available: jxbrowser.swt, jxbrowser.javafx, jxbrowser.compose.
implementation(jxbrowser.swing)
// Add the dependency to Chromium binaries for the current platform.
implementation(jxbrowser.currentPlatform)
}
在建议的方法中,实际的文本编辑器是网页上的 JavaScript 小部件。让我们创建此页面:
<!DOCTYPE html> <html lang="en"> <head> <!-- Make sure to use the latest verion of the library. --> <script src="//cdn.jsdelivr.net/npm/quill@2.0.3/dist/quill.js"></script> <link href="//cdn.jsdelivr.net/npm/quill@2.0.3/dist/quill.snow.css" rel="stylesheet" /> </head> <body> <div id="editor"></div> <script> window.quill = new Quill('#editor', { theme: 'snow' }); </script> </body> </html>
之后,我们可以将页面连同 JavaScript 和 CSS 资产一起复制到项目的资源中。
然后,让我们创建浏览器并显示编辑器:
private void addTextEditor(JPanel container) { var engine = Engine.newInstance(OFF_SCREEN); var browser = engine.newBrowser(); var url = this.getClass().getClassLoader().getResource("editor.html"); browser.navigation().loadUrl(url.toString()); SwingUtilities.invokeLater(() -> { var view = BrowserView.newInstance(browser); container.add(view); }); }
要从 Quill 读取文本,请执行一个简单的 JavaScript 代码:
String getFormattedText(Browser browser) {
var frame = browser.mainFrame();
if (frame.isPresent()) {
return frame.get().executeJavaScript("quill.getSemanticHTML()");
} else {
throw new IllegalStateException("Couldn't obtain the text");
}
}
将内容添加回页面也需要一段 JavaScript 代码:
void setText(Browser browser, String text) {
browser.mainFrame().ifPresent(frame -> {
frame.executeJavaScript("quill.setText(\"%s\")".formatted(text));
});
}
上面的示例演示了使用 JxBrowser 作为富文本编辑器主机的一个非常简单的案例。对于生产中的应用程序,请考虑以下提示:
class Application {
private static Engine engine;
public static void main(String[] args) {
if (engine == null) {
// Create the browser engine only once.
engine = Engine.newInstance(OFF_SCREEN);
}
// Create a separate profile for each user.
var bobProfile = engine.profiles().newIncognitoProfile("Bob");
var browserOne = bobProfile.newBrowser();
var browserTwo = bobProfile.newBrowser();
var aliceProfile = engine.profiles().newIncognitoProfile("Alice");
var browserThree = aliceProfile.newBrowser();
var browserFour = aliceProfile.newBrowser();
...
}
}
在本文中,我们演示了如何使用 JxBrowser 和 Quill.js 将现代 HTML 富文本编辑器集成到 Java 桌面应用程序中。这种方法克服了 Swing、JavaFX 和 SWT 中内置编辑器的局限性,提供了高级功能和对文本编辑的完全控制。
如果您有产品试用下载、价格咨询、优惠获取,或其他任何问题,请联系。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:慧都网Word 文档中的批注通常用于协作审阅和反馈。这些批注可能包含文本和图片,它们为文档改进提供了重要的参考信息。本文将演示如何使用 Spire.Doc for Java 在 Java 中提取 Word 文档中的批注文本和图片。
本文主要介绍如何使用DevExpress WinForms Data Grid组件实现列重新排序,欢迎下载最新版组件体验!
Visual Paradigm中的Doc. Composer菜单,可让您以完全可自定义的方式输出模型和图表的每个细节。在本文中,您将学习如何创建自定义模板来输出项目中图表或模型元素的注释。
对于银行金融、政府、医疗等需要处理大量信息的组织来说,高效的数据管理至关重要。对于大型数据扫描项目,Dynamic Web TWAIN SDK 提供强大的功能,只需极少的设置即可支持大量文档处理,让我们看看 Dynamsoft 如何简化此过程中的每个步骤。
一个跨平台的库,用于将Chromium浏览器集成到Java应用程序中
DotNetBrowserDotNetBrowser能添加Chromium引擎到你的.NET 应用中,支持.NET6!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢