Z-Order в JavaFX - PullRequest
       42

Z-Order в JavaFX

14 голосов
/ 07 июня 2010

Как мне установить Z-порядок для VBox в JavaFX?

Ответы [ 3 ]

31 голосов
/ 07 июня 2010

Z-порядок в JavaFX фактически является порядком в графе сцены, например. в последовательности содержимого сцены (затем в содержимом групп, контейнеров и т. д.).

Все узлы также имеют функции toFront () и toBack (), чтобы помочь изменить этот порядок. Для более точного управления вы должны удалить узлы из одного места и вставить их выше или ниже в последовательности.

14 голосов
/ 27 февраля 2013

С помощью функций toFront () и toBack () вы действительно можете влиять на z-порядок, но помните, что это также влияет на макет. Например, HBox и VBox также используют последовательность дочерних элементов для создания макета, а перемещение чего-либо вперед также перемещает его в конец блока [HV]. Это может быть не то, что вы ищете.

Я искал способ сделать анимацию с анимированным узлом поверх всех остальных, не путая макет. Кажется, нет никакого способа сделать это, потому что z-порядок и порядок расположения взяты из дочернего порядка.

4 голосов
/ 24 декабря 2018

Хотя остальные ответы по-прежнему верны, в JavaFX 9 добавлен способ манипулирования Z-порядком без изменения списка детей. Это делается с помощью свойства Node.viewOrder.

Javadoc:

Определяет порядок рендеринга и выбора этого Node в пределах его родителя.

Это свойство используется для изменения порядка рендеринга и выбора узла внутри его родителя без изменения порядка в списке children родителя. Например, это можно использовать как более эффективный способ реализации прозрачной сортировки. Для этого приложение может присвоить значение viewOrder каждого узла вычисленному расстоянию между этим узлом и средством просмотра.

Родитель будет проходить через children в порядке убывания viewOrder. Это означает, что ребенок с более низким viewOrder будет находиться перед ребенком с более высоким viewOrder. Если двое детей имеют одинаковые viewOrder, родитель будет проходить их в том порядке, в котором они указаны в списке children родителей.

Однако viewOrder не изменяет расположение и порядок обхода фокуса этого Node в пределах его родителя. Родитель всегда просматривает свой список children по порядку при выполнении макета или обхода фокуса.

Значение по умолчанию:

0.0

С:

9

...