对于单行文本,请使用TextField .
对于多行文本,请使用TextArea .
对于样式文本,请使用HTMLEditor .
如果使用TextField或TextArea,它们都是TextInputControl的子类 . TextInputControl提供caretPositionProperty,您可以使用它来读取和修改插入位置 . 所有场景图形对象(包括TextField和TextArea)都是Node的实例 . 节点允许您设置自定义EventHandlers和event filters . 您可以使用事件处理程序覆盖TextInputControls的默认键处理处理程序,以便您可以实现自己的处理 .
如果您需要通过自定义TextField或TextArea实例无法获得的进一步自定义功能,那么您可以创建自己的TextInputControl子类并根据需要实现自定义文本编辑组件,但由于复杂性,我不会真正建议这种方法并且可能需要依赖于您可能最终需要的内部JavaFX apis .
TextField对我不起作用,因为:1 . 它有一个指示焦点的边框,我不知道如何删除 .
这是一个指向default caspian.css stylesheet for JavaFX 2.2的链接 . 您可以通过设置's :focused pseudoclass selector style to the same values as it'的默认选择器来设置TextField的样式以删除焦点边框 . 例如:
.text-field:focused {
-fx-background-color: -fx-shadow-highlight-color, -fx-text-box-border, -fx-control-inner-background;
-fx-background-insets: 0, 1, 2;
-fx-background-radius: 3, 2, 2;
}
TextField对我不起作用,因为:2 . 它有固定数量的列,我需要动态更改宽度 .
TextField是一个可调整大小的控件,如果将其放在具有适当约束的调整大小布局窗格中,它将动态更改其宽度 . TextField中的列数设置为preferred column count,而不是固定列数 .