Не использовать getChildren () для root / JavaFX [duplicate]

Конструктор - это специальный метод класса, инициализирующий поле класса. Имя_компьютера - это то же имя, что и имя класса. У него нет типа возврата. Когда экземпляр создается, вызывается конструктор времени. Без памяти конструктора нельзя выделить, если разработчику не удалось определить конструктор, а затем неявный конструктор, вызываемый и инициализирующий поле с фиксированным значением или значением по умолчанию для типа данных.

2
задан pkaramol 14 October 2014 в 17:07
поделиться

1 ответ

Вы вызываете неправильный метод. Вам нужно

srcPaneUsers.setContent(myGridPane);

Метод getChildren(), определенный в Parent, является защищенным методом. Он переопределяется в Pane как общедоступный метод, поэтому для макетов (GridPane, BorderPane и т. Д.) Вы можете напрямую манипулировать списком дочерних узлов.

ScrollPane - это ScrollPane extends Control extends Region extends Parent, поэтому он наследует метод protected getChildren(). И это на самом деле имеет смысл: дочерние узлы ScrollPane - это такие вещи, как окно просмотра (которое зажимает представление содержимого) и полосы прокрутки: вы действительно не хотите, чтобы пользователь манипулировал ими, в противном случае вы в конечном итоге получаете скорее всего, не будет функционировать правильно. ScrollPane действительно имеет только один узел, который настраивается: узел, из которого ScrollPane предоставляет представление: это называется его content и доступ через contentProperty(), getContent() и setContent() ].

Аналогичным образом работают другие «контейнероподобные элементы управления». Класс TabPane предоставляет метод getTabs(), который возвращает ObservableList<Tab>; и класс Tab, в свою очередь, предоставляет contentProperty(), чтобы вы могли получить доступ к содержимому каждой отдельной вкладки. Вкладка SplitPane предоставляет метод getItems(), возвращающий ObservableList<Node> для узлов, отображаемых на панели. В случае SplitPane его дочерние узлы больше, чем элементы: они включают визуальные компоненты, представляющие разделители, и т. Д. В обоих случаях метод getChildren() является защищенным методом (унаследованным от Parent).

Обратите внимание, что Parent также определяет общедоступный метод getChildrenUnmodifiable(), который возвращает немодифицируемое представление списка дочерних узлов. Вы можете использовать это, чтобы проверить иерархию узлов любого родителя, но не изменять его. (Однако для целей отладки, особенно для работы с CSS, я рекомендую использовать ScenicView .)

6
ответ дан James_D 16 August 2018 в 11:33
поделиться
  • 1
    Спасибо за правильный ответ. Просто из любопытства, любая идея, почему getChildren().add(..) здесь не работает? Так я добавляю элементы в GridPane. – pkaramol 15 October 2014 в 10:02
  • 2
    Добавлено объяснение. – James_D 15 October 2014 в 13:54
Другие вопросы по тегам:

Похожие вопросы: