GraphStream样式没有可怕的字符串/绝对文件路径?

时间:2017-11-09 15:55:36

标签: java stylesheet embedded-resource graphstream

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

  

此属性必须存储在图表中,并将其作为值   样式表本身作为字符串或文件的URL,   本地的,远处的或装在罐子里的。

     

例如,您可以使用a更改图表的背景颜色   以这种方式作为字符串给出的样式表:

     

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

     

但您也可以指定一个网址:

     

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

     

或者:

     

graph.addAttribute(" ui.stylesheet&#34 ;,   " URL(文件:///某处/上/中/彩虹/样式表')&#34);

但是,我对此进行了实验,并得出结论,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; }";
坦率地说非常难看。

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

1 个答案:

答案 0 :(得分:1)

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

  • 使用引用here的方法之一将每个资源转换为适合String的{​​{1}}。

  • 使用您的样式加载java.util.Properties的实例,如herehere所示,以便每个样式都可用作addAttribute()适用于{{ 1}}。