В дополнение к использованию ScenicView, предложенному Улуком, иногда я также просто удаляю активные узлы в консоли после показа Stage. Это значение по умолчанию для toString()
для узлов перечисляет их идентификаторы css и классы стилей.
// debugging routine to dump the scene graph.
public static void dump(Node n) { dump(n, 0); }
private static void dump(Node n, int depth) {
for (int i = 0; i < depth; i++) System.out.print(" ");
System.out.println(n);
if (n instanceof Parent)
for (Node c : ((Parent) n).getChildrenUnmodifiable())
dump(c, depth + 1);
}
Пример вывода:
[email protected]
[email protected][styleClass=lyric-text]
Button[id=null, styleClass=button change-lyric]
ButtonSkin[id=null, styleClass=button change-lyric]
[email protected]
[email protected][styleClass=text]
Существует несколько недокументированных внутренний апи вокруг обработки CSS, но ничего общественности.
Запросить эту публикацию можно здесь: CSS Style Object Model in Java. Вы создаете вещь, называемую StyleMap, и присоединяете ее к узлу, что фактически создает слушатель, который записывает изменения обработки css для узла, следующего за после, вы добавили StyleMap.
public void addStyleMaps(Node node, int depth) {
node.impl_setStyleMap(FXCollections.observableMap(new HashMap<WritableValue, List<Style>>()));
if (node instanceof Parent) {
for (Node child : ((Parent) node).getChildrenUnmodifiable()) {
addStyleMaps(child, depth + 1);
}
}
}
Если изменить подпрограмму дампа выше =>
System.out.println(n + " " + node.impl_getStyleMap());
, то процедура будет также распечатать изменения стиля, так как stylemaps были добавлены к узлам.
Примечание. Вышеупомянутый вызов использует impl_ api, который устарел, который может (и, вероятно, будет) изменяться в будущих выпусках JavaFX и не получит поддержку использования и тестирования публичного api.
Я думаю, что для этого вы не найдете его слишком полезным до тех пор, пока механизм не будет реализован в графическом инструменте, таком как ScenicView, чтобы интерактивно предоставлять информацию об CSS-стиле Firebug. Я не думаю, что ScenicView еще есть openource, а внутренняя реализация css не публиковалась, поэтому создать такой инструмент может быть сложно.
это очень хороший инструмент! не знал об этом - спасибо, но, к сожалению, инструмент не показывает, какие свойства css назначаются узлам. – bennyl
JavaFX имеет единственный встроенный CSS-файл caspian.css. Все селекторы определены там, и переопределение этих селекторов достаточно для большинства случаев использования (более глубокие изменения выполняются с помощью скинов). Поэтому, например, использование CSS-скриптов Scene Builder для применения стилей к узлу и поиск свойств CSS и их немедленное изменение с использованием построителя/просмотра CSS Netbeans предоставит вам несколько запросов. Проверьте учебник сценария. –
caspian.css - отличный источник - хотя он может быть приятным иметь что-то вроде firebug для отладки css .. но я думаю, я не должен быть жадным :) – bennyl