gpt4 book ai didi

java - 为什么 unicode 字符\u0004 没有显示在 Javafx TextArea 中

转载 作者:行者123 更新时间:2023-11-30 06:11:09 27 4
gpt4 key购买 nike

我有一个算法,可以将给定的 unicode 字符串 转换为其他形式。用户必须通过 TextArea 提供此 unicode 字符串。该 unicode 字符串包含 enter image description here (\u0004) 将由算法处理的字符;

示例字符串:enter image description here

但问题是字符串enter image description here当粘贴到 javafx 中的 TextArea 时,将转换为 aaa。见下图

enter image description here

当我使用.Net框架时,这不是问题。 .Net Framework 的 TextArea 显示正确,如下图所示
enter image description here

知道如何解决这个问题吗?

最佳答案

我刚刚检查了替换实际发生的位置。它位于 TextArea.TextAreaContent 类中,遗憾的是无法用自定义实现替换,因为它是为 TextArea 的每个构造函数传递的(至少在没有反射或自定义类加载器的情况下) )。

您可以通过将文本替换为在 TextFormatter 中正确呈现的文本来应用解决方法。如果您需要跟踪“真实”文本,您还可以使用 TextFormatter 来记录更改并覆盖 TextAreacopy 方法将适当的内容复制到剪贴板。

textArea.setTextFormatter(new TextFormatter<String>(change -> {
String text = change.getText();
if (!text.isEmpty()) {
change.setText(text.replace('\u0004', '\u02e9')); // replace eot char with "valid" one
}
return change;
}));

请注意,JavaFX 还会删除所有其他未接受特殊处理的字符 <0x20

关于java - 为什么 unicode 字符\u0004 没有显示在 Javafx TextArea 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50199600/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com