Я только начал изучать JavaFX для создания настольных приложений, и в настоящее время у меня пока нет личного обучения.Прямо сейчас относительно вопроса, я пытаюсь сделать пользовательский макет, который зависит от его размера от общего размера его дочерних элементов.Моя проблема заключается в получении размера каждого ребенка при вычислении высоты и ширины.Здесь я использую метод getLayoutBounds()
для получения размера детей, но он всегда возвращает 0 в моем случае:
@Override
protected double computePrefWidth(double height) {
for (int i = 0; i < getChildren().size(); i++) {
Node node = getChildren().get(i);
System.out.println(node.getLayoutBounds().getWidth()); // returns 0
}
}
Так что я предполагаю, что речь идет о проходе макета (скажем, ребенок еще не выложен).Но в любом случае, если это так или нет, как я могу получить точный размер узла, включая вставки, отступы и т. Д.?Спасибо за все ответы.
ОБНОВЛЕНИЕ
В итоге я использую метод prefWidth()
и prefHeight()
, который является правильным ответом.Это моя ошибка в использовании метода getWidth()
и getHeight()
, так как я думал, что метод prefWidth()
не включает отступы / вставки.С другой стороны, getWidth()
фактически полагается на проход макета *1020*, что означает, что он возвращает 0, потому что узлы (дочерние элементы) еще не разложены на стадии, что является ответом @ ᴇʟᴇvᴀтᴇ нижеэто правильно.
Так что ради других, кто сталкивался с этим, вы можете прочитать этот один и, наконец, убедиться, что все таблицы стилей CSS правильно применяются, если вы не получаетеожидаемый результат при использовании методов pref
, min
, max
(см. ответы по @fabian и @SilasGyeme ниже).