在 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; }";
坦率地说,这非常难看。
有没有人对如何改善这种情况有任何想法?提前致谢!