java - 如何更改文本在 TextField 中的呈现方式?
问题描述
我正在创建一个修改后的 TextArea,它应该像控制台一样工作。为了描述输出,我使用了两个私有字符:U+FF100 和 U+FF101。
这些字符在屏幕上显示时需要是不可见的(即像零宽度空间)。我正在考虑使用自定义字体,但我可能可以在我的代码中做到这一点。我该怎么做呢?
我正在使用 JavaFX 14.0.2.1。
解决方案
RichTextFX具有InlineCssTextArea类,它允许您为文本范围添加样式。您可以display: none
在范围上使用(或等效的 JavaFX)。
我没有使用它,但基于 API,这样的东西应该可以工作:
InlineCssTextArea textArea = new InlineCssTextArea(text);
textArea.textProperty().addListener((observable, oldValue, newValue) -> {
int index = textArea.getText().indexOf("\uDBBC\uDD00");
while(index >= 0) {
textArea.setStyle(0, index, index + 1, "display: none;");
index = textArea.getText().indexOf("\uDBBC\uDD00", index + 1);
}
}
for loop
如果这是您的偏好,您也可以使用。您可能希望存储最后一个设置样式的范围,以便当值更改时,您会在该范围之后开始。
推荐阅读
- git - git从具有不同路径的2个不相关的repos中合并特定目录到目标目录
- sql - 有没有办法将已聚合为单个列的列分开?
- ios - 后续视图的 NavigationTab 不起作用
- kubernetes - 我们如何删除 Kubernetes 中的现有角色?
- python - 如何使用 google doc api 创建具有水平页面方向的文档
- r - Outlook 附件保存脚本在 Windows 命令提示符下不起作用(在 RStudio 中完美运行)
- sql - 实时更新的仪表板,如何构建
- c# - AvalonEdit 如何在转换器中添加新语法
- java - Apache POI SAX XSSFReader 读取错误的日期格式
- apache - 有没有办法在 Apache HTTP Server 中实现 HTTP/3 (QUIC)?