我使用JavaFX工作时,与一些CSS样式挣扎..
我不知道是否有任何的方式来调试CSS?
财产以后类似Firebug或Chrome的构建工具,能告诉你,当你按下一个元素是什么CSS样式应用到它。
我使用JavaFX工作时,与一些CSS样式挣扎..
我不知道是否有任何的方式来调试CSS?
财产以后类似Firebug或Chrome的构建工具,能告诉你,当你按下一个元素是什么CSS样式应用到它。
有一看晓晖看到它有点至少满足您的需求。
除了使用ScenicView作为Uluk建议,有时候我也只是转储到控制台活动节点呈现出穗后。 这个默认toString()
为节点列出它们的CSS ID和样式类。
// 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);
}
输出示例:
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]
周围有CSS处理一些无证内部API,但没有公开。
使这个公共API的请求是在这里: 在Java的CSS样式对象模型 。 您创建一个名为StyleMap设定的事情,它连接到一个节点,这实际上造成它记录了你所添加的StyleMap设定后发生的节点的CSS处理更改的侦听器。
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加入的节点。
注意上面的呼叫使用它被废弃在未来的JavaFX版本这可以(可能会)的变化,并不会收到使用和公共API的测试支持的impl_ API。
我认为,虽然,对于这一点,你就不会觉得它太有用了,直至机制落实到像ScenicView以交互方式提供Firebug的CSS样式信息的图形工具。 我不认为ScenicView是开源又和内部CSS实现不公开发布,所以它可能很难自己创建这样的一个工具。