如何从javafx文本区域复制有风格的文本?

qco9c6ql  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(725)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题
我有一个等距字体,我想从javafx应用程序中的文本区域将其与文本一起复制。然而,似乎只有文本被复制而不是样式。

rn0zuynd

rn0zuynd1#

看看javafx Clipboard 作品。
下面是javadoc中的一个将纯文本和格式化文本都放入剪贴板的示例:

final Clipboard clipboard = Clipboard.getSystemClipboard();
final ClipboardContent content = new ClipboardContent();
content.putString("Some text");
content.putHtml("<b>Some</b> text");
clipboard.setContent(content);

特别是看标准 DataFormat s、 包括文件、html、图像、纯文本、rtf和url。
如果要在 ClipboardContent ,则需要使用允许格式化数据的数据格式,并且需要在数据中包含格式化信息。
支持文本格式的数据格式有html和rtf。您可以使用标准数据格式,也可以创建自己的数据格式。
文本区域不适用于格式化文本。文本区域本身可以设置样式,但其中的文本在显示时只会遵循文本区域的样式。当你从文本区域复制文本时,它不会被格式化,只会被格式化 PLAIN_TEXT 放在剪贴板上。
如果要在内容从文本区域复制出来时格式化内容,则需要截取或重写javafx系统中为文本区域编码的默认复制函数。当文本区域将复制的文本添加到剪贴板时,不要添加纯文本,而是添加具有您应用的适当格式的格式化文本。这可能是可能的,尽管这不是小事,而且我目前不打算在这里尝试编写代码来实现这一点(如果另一个积极的回答者愿意,可以在另一个答案中这样做)。
与使用javafx textarea不同,javafx textarea不是为处理富格式文本而构建的,您可以使用另一种文本编辑器来处理此类格式化文本。
例如:
第三方richtextfx项目。
webview中显示的基于javascript html的富文本编辑器
内置javafx htmleditor。
如果将格式化文本从这些设计用于处理格式化文本的控件中复制出来,则与设计用于处理纯文本的文本编辑器不同,信息应使用格式样式和格式化数据复制到剪贴板(例如,从前面概述的基于html的选项复制的数据的剪贴板内容的html数据格式)。我只说应该在这里,因为实际使用的格式将取决于实现。
但是,即使您设法将格式化数据放入剪贴板,这也只是问题的一半。当有人将剪贴板内容粘贴到某个地方时,消费应用程序需要了解其中的数据格式和数据,以便使用它。因此,如果您只是编写自己的数据格式,除非您还编写和控制使用粘贴数据的应用程序,否则任何东西都无法使用它。相反,您需要了解消费应用程序了解哪些数据格式,并使用这些格式。这样,消费应用程序将能够解码、处理并在必要时显示粘贴的数据。
有关在javafx程序中创建和使用剪贴板内容的剪贴板用法示例,请参阅oracle教程以及剪贴板和拖动操作示例,这些示例非常好,但并不全面。

相关问题