java - JavaFX 输入字段不接受制表符
问题描述
所以我可能有一个简单的问题,但我在谷歌上找不到任何人问这个问题,所以现在我在这里。
问题很简单 - 我必须复制一行包含空格和制表符的文本,但是一旦我将它复制到我的文本(输入)字段中,由于某种原因它会删除所有制表符,所以它将文本全部保留在一大堆东西,我无法从中过滤掉任何东西。
任何想法可以做些什么,以便这些输入字段允许制表符?
PS通过在输入字段内按tab,它在按钮之间移动,而不是输入制表符。
解决方案
a 的内容TextField
由私有静态类表示TextFieldContent
。 TextFieldContent
实现insert(int index, String text, boolean notifyListeners)
过滤输入文本的方法。该方法使用TextInputControl
类中的静态方法来删除“非法”字符,这里是实现:
@Override
public void insert(int index, String text, boolean notifyListeners) {
text = TextInputControl.filterInput(text, true, true);
if (!text.isEmpty()) {
characters.insert(index, text);
if (notifyListeners) {
ExpressionHelper.fireValueChangedEvent(helper);
}
}
}
最后一个参数TextInputControl.filterInput(text, true, true)
定义制表符是否“非法”。它设置为true
,正如我之前提到的,该类是一个私有静态最终类,您不能扩展它并覆盖insert
方法。
解决方案是扩展TextInputControl
并创建一个Content
不删除制表符的自定义类。
作为替代方案,您可以使用TextArea
, 文本区域接受制表符。
推荐阅读
- c# - asp .net core api 在 iis 上发布原因(localhost 当前无法处理此请求。HTTP ERROR 500)
- python - 如何检查元素是否在 Class.models.all() 中?
- python - django 重写序列化程序 save() 方法
- python - Python:计算相对于另一个图像不存在的非零像素的总数
- memory-management - 了解 64 位 Linux 上的 kmap
- nginx - 使用 Nginx 进行 301 重定向
- android - 在 android studio 中通过改造发送数据
- sql - 聚合单个 SQL 数据表
- node.js - 在电子中找不到自己构建的原生模块
- c++ - UE4 从外部 .FBX 文件创建 UStaticMesh 返回 NULL