首页 / JAVA / java – JUNG布局问题
java – JUNG布局问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – JUNG布局问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3246字,纯文字阅读大概需要5分钟。
内容图文
![java – JUNG布局问题](/upload/InfoBanner/zyjiaocheng/730/3c5bd4dc16b446ff85884be2d8cdae53.jpg)
我有一些图表,我想用JUNG2显示,如下图所示.
我玩过一些JUNG2的布局,但我总是得到这样的图像:
是否可以按照我的意愿布置图形而无需编写新的布局?
提前致谢
德米特里
UPD:这是我用于可视化图形的代码:
private Embedded createSampleGraph() {
Embedded imageComponent = null;
try {
final DocumentBuilderFactory docBuilderFactory =
DocumentBuilderFactory
.newInstance();
final DocumentBuilder docBuilder =
docBuilderFactory.newDocumentBuilder();
final Document document = docBuilder.newDocument();
final Element svgelem = document.createElement("svg");
document.appendChild(svgelem);
final SVGGraphics2D graphic2d = new SVGGraphics2D(document);
final Graph<String, String> graph = createGraph();
final VisualizationImageServer<String, String> server =
createServer(graph);
server.printAll(graphic2d);
final Element el = graphic2d.getRoot();
el.setAttributeNS(null, "viewBox", "0 0 350 350");
el.setAttributeNS(null, "style", "width:100%;height:100%;");
final ByteArrayOutputStream bout = new ByteArrayOutputStream();
final Writer out = new OutputStreamWriter(bout, "UTF-8");
graphic2d.stream(el, out);
final JungResource source = new JungResource(bout);
TPTApplication.getCurrentApplication().addResource(source);
imageComponent = new Embedded("", source);
imageComponent.setWidth(DEFAULT_WIDTH_PIXELS, UNITS_PIXELS);
imageComponent.setHeight(DEFAULT_HEIGHT_PIXELS, UNITS_PIXELS);
imageComponent.setMimeType("image/svg+xml");
addComponent(imageComponent);
} catch (final UnsupportedEncodingException exception) {
LOGGER.error(ErrorCodes.M_001_UNSUPPORTED_ENCONDING, exception);
} catch (final SVGGraphics2DIOException exception) {
LOGGER.error(ErrorCodes.M_002_SVG_GRAPHICS_2D_IO, exception);
} catch (final ParserConfigurationException exception) {
LOGGER.error(ErrorCodes.M_003_PARSER_CONFIGURATION, exception);
}
return imageComponent;
}
private VisualizationImageServer<String, String> createServer(
final Graph<String, String> aGraph) {
final Layout<String, String> layout = new FRLayout<String, String>(
aGraph);
layout.setSize(new Dimension(300, 300));
final VisualizationImageServer<String, String> vv =
new VisualizationImageServer<String, String>(
layout, new Dimension(350, 350));
vv.getRenderContext().setVertexLabelTransformer(
new ToStringLabeller<String>());
return vv;
}
private Graph<String, String> createGraph() {
final Graph<String, String> graph =
new DirectedSparseMultigraph<String, String>();
final String vertex1 = "IE";
final String vertex2 = "P1";
final String vertex3 = "P2";
final String vertex4 = "P3";
final String vertex5 = "FE";
graph.addVertex(vertex1);
graph.addVertex(vertex2);
graph.addVertex(vertex3);
graph.addVertex(vertex4);
graph.addVertex(vertex5);
graph.addEdge("1", vertex1, vertex2, EdgeType.DIRECTED);
graph.addEdge("2", vertex2, vertex3, EdgeType.DIRECTED);
graph.addEdge("3", vertex3, vertex5, EdgeType.DIRECTED);
graph.addEdge("4", vertex1, vertex4, EdgeType.DIRECTED);
graph.addEdge("5", vertex4, vertex5, EdgeType.DIRECTED);
return graph;
}
UPD 17.03.2011
现在我可以绘制如下图形:
解决方法:
如果要固定特定顶点的位置,请在创建布局之后以及将其添加到VisualizationViewer / VisualizationImageServer之前为每个顶点执行以下操作:
layout.setLocation(v, location); layout.lock(v, true);
http://jung.sourceforge.net/doc/api/edu/uci/ics/jung/algorithms/layout/Layout.html
内容总结
以上是互联网集市为您收集整理的java – JUNG布局问题全部内容,希望文章能够帮你解决java – JUNG布局问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。