JavaFX:更改文本区域中的光标

Posted

技术标签:

【中文标题】JavaFX:更改文本区域中的光标【英文标题】:JavaFX: Change cursor in Textarea 【发布时间】:2019-10-30 20:58:10 【问题描述】:

我有一个用于输出状态日志的 Textarea。我不希望用户能够将文本放入其中,所以我将可编辑设置为 false。我也希望光标是普通的箭头光标,但这不起作用。

我尝试设置 textarea 的光标,但没有成功。

textArea.setCursor(Cursor.DEFAULT);

当悬停在文本区域时,它仍然显示通常的文本区域光标,而不是标准箭头光标。我错过了什么?

【问题讨论】:

尝试 setMouseTransparent(true)。如果为 true,则此节点(连同其所有子节点)对鼠标事件完全透明。 或者查看这个答案***.com/a/25630584/2244676 setMouseTransparent(true) 的问题是,滚动也是不可能的。另一个答案可以帮助我理解为什么我的解决方案不起作用。 【参考方案1】:

解决方案不起作用的原因已回答here。 如果 CSS 不是您的选择,请尝试以下方法:

textArea.setId("idTextArea");// you can set also control id in fxml file
textArea.getScene().lookup("#idTextArea .content").setCursor(Cursor.DEFAULT);

确保在运行代码之前已初始化 Scene 对象。

【讨论】:

感谢您的回答。出于某种原因,即使我将此代码作为最后一条语句运行,我也会收到 Nullpointerexception。但是如果我在一个单独的线程中等待直到场景初始化,它现在就可以工作了。在此之后,我必须再次等到 textArea.getScene().lookup("#idTextArea .content") 不为空。或许我应该了解一下 JavaFX 中的时间安排。 在 CSS 应用到场景之前,不能保证查找工作,因此您需要在 WindowEvent.WINDOW_SHOWN 事件生成后调用代码。 ***.com/a/16921731/2244676 在您的情况下,我想更可靠的解决方案是编辑外部 CSS 文件。 没有一个选项对我有用。光标仅显示在 textArea 边框中,而不显示在内容区域中。

以上是关于JavaFX:更改文本区域中的光标的主要内容,如果未能解决你的问题,请参考以下文章

使用 ASP.net 更改 HTML 文本区域中的字体名称和大小

在文本区域中的光标位置之后插入文本

获取文本区域中的光标位置

如何更改文本区域中一行用户输入的背景颜色?

文本区域中的光标位置(字符索引,不是 x/y 坐标)

文本区域中的CSS悬停滚动条光标