【发布时间】:2020-07-03 19:01:19
【问题描述】:
试试这个简单的 Javafx 代码:
TextField text1 = new TextField("abc");
TextField text2 = new TextField("abc");
HBox root = new HBox(text1, text2);
Scene scene = new Scene(root, 800, 600);
stage.setScene(scene);
stage.show();
现在,如果您单击 TextField 将插入符号定位在“b”字符之前,那么如果您按 DEL 键删除“b”,您会注意到插入符号通常向左移动一个字符而不是原地不动:
注意:您必须使用鼠标单击“b”才能将插入符号移动到那里。如果您使用键盘箭头键将插入符号移到那里,则不会发生此错误。
您可能需要重复几次才能看到此效果。 在我的 Windows 10 计算机中,它发生的次数超过 70%。
这是一个已知的错误吗?有解决办法吗?
【问题讨论】:
-
很高兴你也可以复制它。我搜索了 OpenJDK 错误,但找不到现有的错误报告。我想我应该做一个。
-
@Slaw 对我来说都是 textFields,但仅在索引 1 处(并且仅在单击该索引时,而不是通过导航到达它)- fx11 和当前开发人员(希望有一个神奇的一面-当前正在修复的效果..但是如果我们需要它,魔法在哪里;)
-
@Slaw 看起来像 caretPosition 是正确的(未更改),但插入符号绘制在错误的位置.. 这类似于 bugs.openjdk.java.net/browse/JDK-8210145 (尽管该错误中的上下文与具有过滤器的 TextFormatter 不同) - 知道我在某处/不知何故见过它..
-
在我的情况下,索引不一定重置为 0。它会向左移动,因此如果您尝试索引 10,结果将位于索引 9。但正如有人已经指出的那样,这只是一个渲染错误。插入符号实际上保持在正确的位置,但在错误的索引处呈现。我提交了一个错误。当它被分配一个时会发布链接。
-
实际上,hitInfo 本身似乎没问题(前导标志打开/关闭取决于字符被击中的位置),但出于某种奇怪的原因,后来使用前导/不移动textNode 的插入符号向前/向后使其与控件插入符号不同步,这导致(?不知道究竟为什么)视觉怪癖(如果皮肤认为,这也具有禁用向前键盘导航的效果 - 正确地,作为控件的插入符号是 - 它已经在最后)