tutorial style agregar java css debugging javafx styling

style - JavaFX 2 depug css



javafx stylesheet tutorial (2)

Eche un vistazo en Scenic View para ver si cumple al menos con sus necesidades.

Estoy luchando con algunos estilos css cuando trabajo con JavaFX.

Me pregunto si hay alguna forma de depurar el CSS.

algo así como firebug o la herramienta incorporada en Chrome que te muestra cuando presionas un elemento qué estilos CSS le son aplicables.


Además de usar ScenicView como Uluk sugirió, a veces también simplemente vuelco los nodos activos a la consola después de mostrar un escenario. Este valor predeterminado toString() para los nodos enumera sus identificadores CSS y clases de estilo.

// 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); }

Muestra de salida:

BorderPane@13c3750 Text@2e3919[styleClass=lyric-text] Button[id=null, styleClass=button change-lyric] ButtonSkin[id=null, styleClass=button change-lyric] ImageView@13a4e73 LabeledText@567aef[styleClass=text]

Hay alguna api interna no documentada en el procesamiento css, pero no es pública.

Una solicitud para hacer pública esta API está aquí: CSS Style Object Model en Java . Usted crea una cosa llamada un Mapa de Estilos y lo asocia a un nodo, que en efecto crea un oyente que registra los cambios de procesamiento css para el nodo que ocurre después de haber agregado el Mapa de Estilos.

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); } } }

Si modifica la rutina de volcado anterior a =>

System.out.println(n + " " + node.impl_getStyleMap());

luego la rutina también imprimirá los cambios de estilo dado que los mapas de estilo se agregaron a los nodos.

Tenga en cuenta que la llamada anterior utiliza una impl_ api que está en desuso, que puede (y probablemente cambiará) en futuras versiones de JavaFX y no habrá recibido el soporte de uso y prueba de la API pública.

Sin embargo, creo que no lo encontrará demasiado útil hasta que el mecanismo se implemente en una herramienta gráfica como ScenicView para proporcionar de manera interactiva la información css del estilo Firebug. No creo que ScenicView sea de código abierto y la implementación interna de CSS no está documentada públicamente, por lo que puede ser difícil crear una herramienta de este tipo.