为什么TextField继承自JavaFX中的javafx.scene.Parent?

时间:2018-10-23 10:08:04

标签: java javafx

我正在阅读javafx TextField API:

 java.lang.Object
    javafx.scene.Node
        javafx.scene.Parent
            javafx.scene.layout.Region
                javafx.scene.control.Control
                    javafx.scene.control.TextInputControl
                        javafx.scene.control.TextField 

如您所见,TextField继承自javafx.scene.Parent类。来自父类javadoc The base class for all nodes that have children in the scene graph.,但我不明白TextField可以拥有哪些子节点。谁能解释?

2 个答案:

答案 0 :(得分:3)

这是因为TextField不是由单个Node组成。例如,对于提示文本和普通文本,它使用(不同)Text个节点。它还为插入符使用Path。对于Control,这是通过Skin(例如TextInputControlSkinTextFieldSkin)实现的。

但是,请注意,TextField不会公开其子级进行修改;随机代码不能随便添加节点。但是您可以以不可修改的方式查看孩子。

答案 1 :(得分:1)

它可以具有您想要的任何子节点-没有固有的原因,您不能为其子项添加标签,图形或怪异形状之类的东西。试试吧-可以!

在实践中,您可能不会这样做,而是将文本字段和怪异的形状(或其他形状)添加到StackPane或类似的容器中,因为这样可以更好地控制布局和可扩展性。