在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; }";
坦率地说非常难看。
有没有人对如何改善这种情况有任何想法?提前谢谢!
答案 0 :(得分:1)
使用embedded-resource和getResource()
是可行的方法。要避免文件系统变幻莫测,请尝试以下方法之一:
使用引用here的方法之一将每个资源转换为适合String
的{{1}}。
使用您的样式加载java.util.Properties
的实例,如here和here所示,以便每个样式都可用作addAttribute()
适用于{{ 1}}。