Depuração do JavaFX 2 css

Eu estou lutando com algum estilo css quando se trabalha com JavaFX ..

Gostaria de saber se existe alguma maneira de depurar o css?

algo como o firebug ou a ferramenta incorporada no chrome que mostra quando você pressiona em um elemento que estilos css se aplicam a ele.

Dê uma olhada no Scenic View para ver se ele atende às suas necessidades pelo menos um pouco.

Além de usar o ScenicView como Uluk sugerido, às vezes eu também simplesmente despejo os nós ativos no console depois de mostrar um Stage. Esse padrão toString() para os nós lista seus IDs de css e classs 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); } 

Exemplo de saída:

 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] 

Há alguma API interna não documentada em torno do processamento de css, mas nada público.

Uma solicitação para tornar essa API pública está aqui: CSS Style Object Model em Java . Você cria uma coisa chamada StyleMap e a anexa a um nó, o que cria, na verdade, um ouvinte que registra as alterações de processamento de css para o nó que ocorrem depois que você adiciona o StyleMap.

 public void addStyleMaps(Node node, int depth) { node.impl_setStyleMap(FXCollections.observableMap(new HashMap>())); if (node instanceof Parent) { for (Node child : ((Parent) node).getChildrenUnmodifiable()) { addStyleMaps(child, depth + 1); } } } 

Se você modificar a rotina de dump acima para =>

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

então a rotina também imprime mudanças de estilo desde que os mapas de estilos foram adicionados aos nós.

Observe que a chamada acima usa uma impl_api que está obsoleta, o que pode (e provavelmente irá) mudar em futuras versões do JavaFX e não terá recebido o suporte de uso e teste da API pública.

Eu acho que, para isso, você não vai achar muito útil até que o mecanismo seja implementado em uma ferramenta gráfica como o ScenicView para fornecer interativamente informações de estilo do Firebug. Eu não acho que o ScenicView é opensource ainda e a implementação do css interno não é documentada publicamente, por isso pode ser difícil criar uma ferramenta como você mesmo.