Почему TextField наследуется от javafx.scene.Parent в JavaFX? - PullRequest
0 голосов
/ 23 октября 2018

Я читаю 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 голосов
/ 23 октября 2018

Это потому, что TextField не состоит из одного Node.Например, он использует (разные) Text узлы для приглашения и обычного текста.Он также использует Path для каретки.Для Control s это реализуется с использованием Skin (например, TextInputControlSkin и TextFieldSkin).

Однако обратите внимание, что TextField не выставляет егодети публично для модификации;случайный код не может просто добавить к нему узлы.Но вы можете просматривать детей в неизменяемом виде.

0 голосов
/ 23 октября 2018

Он может иметь любой дочерний узел, который вам нужен - нет присущей причины, по которой вы не могли бы добавить что-то вроде метки, рисунка или странной фигуры в качестве его дочернего элемента.Попробуйте - это работает!

На практике вы, вероятно, этого не сделаете, вы добавите и текстовое поле, и странную форму (или что-то еще) вместо этого в StackPane или подобное, так как это дает вамбольший контроль над макетом и расширяемостью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...