Oprócz korzystania z ScenicView, jak zasugerował Uluk, czasami po prostu po prostu zrzutu aktywnych węzłów do konsoli po wyświetleniu Stage. Ta domyślna toString()
dla węzłów zawiera ich identyfikatory css i klasy stylów.
// 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);
}
Przykładowe wyjście:
[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]
Istnieją pewne nieudokumentowane api wokół wewnętrznego przetwarzania CSS, ale nic publicznego.
Wniosek o udostępnienie tego api publicznej: CSS Style Object Model in Java. Tworzysz obiekt o nazwie StyleMap i dołączasz go do węzła, który w efekcie tworzy detektor, który rejestruje zmiany przetwarzania css dla węzła występujące po dodaniu mapy stylów.
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);
}
}
}
Jeśli zmodyfikować procedurę zrzutu wyżej =>
System.out.println(n + " " + node.impl_getStyleMap());
wtedy procedura będzie również wydrukować zmiany stylu ponieważ stylemaps dodano do węzłów.
Uwaga powyższe wywołanie używa imp_ api, które jest nieaktualne, co może (i prawdopodobnie będzie) zmienić w przyszłych wydaniach JavaFX i nie otrzymało obsługi i testowania publicznego interfejsu API.
Myślę jednak, że nie okaże się to zbyt użyteczne, dopóki mechanizm nie zostanie zaimplementowany w narzędzie graficzne, takie jak ScenicView, aby interaktywnie udostępniać informacje CSS typu Firebug. Nie sądzę, że ScenicView jest jeszcze opensource, a wewnętrzna implementacja CSS nie jest publicznie udokumentowana, więc samodzielne stworzenie takiego narzędzia może być trudne.
to bardzo ładne narzędzie! Nie wiedziałem o tym - dziękuję, ale niestety narzędzie nie pokazuje, jakie właściwości css są przypisane do węzłów. – bennyl
JavaFX ma jedyny wbudowany plik CSS caspian.css. Wszystkie selektory są tam zdefiniowane i nadpisanie tych selektorów wystarcza dla większości przypadków użycia (głębsze zmiany są dokonywane za pomocą skórek). Wykorzystanie na przykład obsługi CSS programu Scene Builder do stosowania stylów w węźle i sprawdzenia, które właściwości CSS są przypisane i natychmiastowej ich zmiany za pomocą konstruktora/przeglądarki CSS Netbeans zapewni nieco, o co prosisz. Sprawdź samouczek programu Scene Builder. –
caspian.css jest świetnym źródłem - chociaż nadal może być fajnie mieć coś takiego jak firebug do debugowania css .. ale chyba nie powinienem być chciwy :) – bennyl