首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX 2调试css

JavaFX 2调试css
EN

Stack Overflow用户
提问于 2012-05-24 16:56:37
回答 2查看 3.9K关注 0票数 5

在使用JavaFX时,我遇到了一些css样式的问题。

我想知道是否有任何方法可以调试css?

像firebug或者chrome内置的工具,当你按下一个元素时,它会显示什么css样式应用于它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-24 17:18:15

Scenic View上看一下,看看它是否至少满足了你的需求。

票数 6
EN

Stack Overflow用户

发布于 2012-05-24 17:31:59

除了像Uluk建议的那样使用ScenicView之外,有时我还会在显示阶段后将活动节点转储到控制台。节点的这个默认toString()列出了它们的css和样式类。

代码语言:javascript
复制
// 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);
}

示例输出:

代码语言:javascript
复制
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,但没有公开的东西。

公开这个接口的请求在这里:CSS Style Object Model in Java。您创建了一个名为StyleMap的东西,并将其附加到一个节点上,这实际上创建了一个侦听器,该侦听器记录了在添加StyleMap之后对节点所做的css处理更改。

代码语言:javascript
复制
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);
    }
  }
}

如果将上面的转储例程修改为=>

代码语言:javascript
复制
System.out.println(n + " " + node.impl_getStyleMap());

然后,该例程还将打印出样式更改,因为样式图已添加到节点。

注意:上面的调用使用了一个已被弃用的impl_应用程序接口,该应用程序接口可能(并且可能会)在未来的JavaFX版本中更改,并且将不会获得公共应用程序接口的用法和测试支持。

但我认为,在将该机制实现到像ScenicView这样的图形工具中以交互方式提供Firebug样式的css信息之前,您不会发现它太有用。我认为ScenicView还不是开源的,内部的css实现也没有公开的文档,所以自己创建这样的工具可能很困难。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10734193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档