在文本字段中使用自定义插入符

问题描述 投票:0回答:1

我正在尝试在我的文本字段中设置自定义插入符号。我希望插入符号始终可见,即使焦点位于另一个 JavaFX 节点上也是如此。如果可能的话,我还想将插入符号设置为“粗体”并将颜色设置为蓝色。

我正在使用 JavaFX 17.0.2 和 Java 17.0.2+8

我尝试编写自己的 textField 皮肤,但我的 JavaFX 版本没有 Caret 对象,并且我的 TextField 没有 setCaretVisible 属性。我也尝试过使用一些CSS,例如

-fx-caret-color: blue;
,但似乎没有任何效果,非常感谢任何帮助和建议。

我相信我可能必须创建自己的自定义文本字段。我愿意接受任何建议,谢谢

javafx textfield
1个回答
0
投票

插入符号在 TextInputControlSkin

 中作为 
StackPane
 实现,样式类为 
caret-handle
。如果您在 CSS 中设置该类的样式(样式表不是内联样式设置),您可以修改插入符号的外观(我没有尝试过)。

StackPane 是一个区域,因此任何可以应用于区域(很多)的 CSS 样式都应该能够应用于插入符号。还有其他 CSS 属性用于控制插入符号可见性、颜色和其他插入符号属性,如相关问题中提到的,您可以在代码中看到。

如果您想完全更改插入符号样式和行为的其他方面,那么您可以子类化 TextFieldSkin 来创建您自己的。对于某些更改来说,这很棘手,但根据您的需要,这对您来说可能没问题。在一些相关问题中有一些这种方法的简单示例。

相关:

  • 如何在JavaFX 2.0中更改插入符号颜色?
  • javafx - 更改插入符号颜色的最简单方法
  • 在JavaFX8中隐藏TextField的输入插入符
  • TextArea 插入符闪烁时间?
© www.soinside.com 2019 - 2024. All rights reserved.