2

在 GraphStream 文档中,声明我们可以通过以下方式设置图形样式:

此属性必须存储在图形上,并将样式表本身作为字符串或文件的 URL 作为值,本地、远程或打包在 jar 中。

例如,您可以使用以字符串形式给出的样式表更改图形的背景颜色:

graph.addAttribute("ui.stylesheet", "graph { fill-color: red; }");

但你也可以指定一个 URL:

graph.addAttribute("ui.stylehseet", "url(' http://www.deep.in/the/site/mystylesheet ')");

或者:

graph.addAttribute("ui.stylesheet", "url(file:///somewhere/over/the/rainbow/stylesheet')");

但是,我对此进行了实验,得出的结论是 GraphStream 仅支持该属性的绝对文件路径。这是一个问题,因为我最终会将应用程序导出为 JAR 文件,尽管我发现您可以通过执行以下操作来规避该问题:

ClassLoader.getSystemClassLoader().getResource(".").getPath(‌​);

这种方法存在不确定性(即它可能不适用于某些机器,例如 Linux 机器(?))。

在这种情况下,我目前的技巧是将“样式表”存储为一个长字符串,如下所示:

private static final String GRAPH_DISPLAY_STYLESHEET =
    "graph { fill-color: white; }" +
            "node {" +
                "fill-color: black;" +
                "shape: rounded-box;" +
                "shadow-mode: plain;" +
                "shadow-color: #C8C8C8;" +
                "shadow-width: 4;" +
                "shadow-offset: 4, -4;" +
                "text-background-mode: rounded-box;" +
                "text-padding: 5;" +
                "text-background-color: black;" +
                "text-color: white;" +
                "text-size: 20;" +
                "size-mode: fit;}" +
            "edge { fill-color: black; }";

坦率地说,这非常难看。

有没有人对如何改善这种情况有任何想法?提前致谢!

4

1 回答 1

2

使用是可行的getResource()方法。为避免文件系统变幻莫测,请尝试以下方法之一:

  • 使用此处介绍的一种方法将每个资源转换为String适用于addAttribute().

  • java.util.Properties使用您的样式加载 的实例,如此此处所示,以便每种样式都可用作.StringaddAttribute()

于 2017-11-19T18:00:53.560 回答