按下delete键后,Javafx文本字段错误地定位插入符号

按下delete键后,Javafx文本字段错误地定位插入符号,javafx,textfield,Javafx,Textfield,尝试以下简单的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(); 现在,如果单击文本字段将插入符号置于

尝试以下简单的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();
现在,如果单击文本字段将插入符号置于“b”字符之前,然后按DEL键删除“b”,您会注意到插入符号通常会向左移动一个字符,而不是保持不变:

注意:必须使用鼠标单击“b”才能将插入符号移动到此处。如果使用键盘箭头键将插入符号移动到此处,则不会发生此错误

您可能需要重复几次才能看到这种效果。 在我的Windows 10计算机中,它发生的次数超过70%


这是已知的bug吗?有解决办法吗?

我向OpenJDK报告了这个问题:


OpenJDK开发人员已经确认这是一个真正的bug。

很高兴您也能复制它。我搜索了OpenJDK bug,但找不到现有的bug报告。我想我应该做一个。@Slaw对我来说都是文本字段,但只有在索引1处(并且只有在单击该索引,而不是通过导航到达该索引时)-fx11和当前开发人员(希望当前正在使用的修复程序会产生神奇的副作用..但是如果我们需要它,神奇在哪里;)@Slaw看起来caretPosition是正确的(未更改)但是插入符号画错了位置。。这类似于(尽管该bug中的上下文在使用带过滤器的TextFormatter时有所不同)——我知道我在某处/以某种方式看到了它。在我的例子中,索引不一定重置为0。它会向左移动,因此如果您尝试索引10,结果将位于索引9。但正如有人已经指出的,这只是一个渲染错误。插入符号实际上保持在正确的位置,但以错误的索引呈现。我提出了一个错误。将在指定链接时发布链接。实际上,hitInfo本身似乎是正常的(前导标志根据命中字符的位置打开/关闭),但出于某种奇怪的原因,后来前导/非用于向前/向后移动textNode的插入符号,从而使其与前导的控件插入符号不同步(?不知道确切原因)对于视觉上的怪癖(如果皮肤认为——正确,就像控件的插入符号一样——它已经在最后了),它也会禁用向前的键盘导航)很好:)添加了对这个qafyi的引用:优先级提高到p3——幸运的话,可能会在fx16中修复:)哦,太好了!不知道你是OpenJDK的贡献者!没有可能在fx15中包含潜在的修复程序吗?总是有机会的,尽管我怀疑在这种情况下会发生:fx15第一次降级,第二次在月底开始,所以直到有文本专家在场并愿意快速修复它,并使项目负责人相信它是无风险的。。