JUNG 动态改变布局
JUNG change Layout dynamically
我使用 JUNG 创建了一个图形,我想添加一个组合框,让用户可以更改使用的布局(圆形、KK、FR 等)
但我做不到。
这就是我可视化图表的方式:
// The Layout<V, E> is parameterized by the vertex and edge types
this.layout = new CircleLayout<Ressource,Float>(this.graph);
layout.setSize(new Dimension(500, 500)); // sets the initial size of the
// layout space
// The BasicVisualizationServer<V,E> is parameterized by the vertex and
// edge types
this.vv = new BasicVisualizationServer<Ressource, Float>(layout);
vv.setPreferredSize(new Dimension(550, 550)); // Sets the viewing area
// size
// Adjust the edges thikness
Transformer<Float, Stroke> edgeStroke = new Transformer<Float, Stroke>() {
@Override
public Stroke transform(Float arg0) {
return new BasicStroke(arg0);
}
};
vv.getRenderContext().setEdgeStrokeTransformer(edgeStroke);
// Show vertex and edge labels
vv.getRenderContext().setVertexLabelTransformer(
new Transformer<Ressource, String>() {
public String transform(Ressource r) {
return (r.nom);
}
});
vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller());
我试图创建一个全新的 BasicVisualizationServer 对象,每次都有不同的布局,但它没有用,它坚持第一个布局(在我的例子中是圆形)。
更改布局的最佳方法是什么?
谢谢大家!
此演示的源文件(在您的发行版中)演示了如何操作:http://jung.sourceforge.net/doc/api/edu/uci/ics/jung/samples/ShowLayouts.html
我使用 JUNG 创建了一个图形,我想添加一个组合框,让用户可以更改使用的布局(圆形、KK、FR 等)
但我做不到。
这就是我可视化图表的方式:
// The Layout<V, E> is parameterized by the vertex and edge types
this.layout = new CircleLayout<Ressource,Float>(this.graph);
layout.setSize(new Dimension(500, 500)); // sets the initial size of the
// layout space
// The BasicVisualizationServer<V,E> is parameterized by the vertex and
// edge types
this.vv = new BasicVisualizationServer<Ressource, Float>(layout);
vv.setPreferredSize(new Dimension(550, 550)); // Sets the viewing area
// size
// Adjust the edges thikness
Transformer<Float, Stroke> edgeStroke = new Transformer<Float, Stroke>() {
@Override
public Stroke transform(Float arg0) {
return new BasicStroke(arg0);
}
};
vv.getRenderContext().setEdgeStrokeTransformer(edgeStroke);
// Show vertex and edge labels
vv.getRenderContext().setVertexLabelTransformer(
new Transformer<Ressource, String>() {
public String transform(Ressource r) {
return (r.nom);
}
});
vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller());
我试图创建一个全新的 BasicVisualizationServer 对象,每次都有不同的布局,但它没有用,它坚持第一个布局(在我的例子中是圆形)。
更改布局的最佳方法是什么?
谢谢大家!
此演示的源文件(在您的发行版中)演示了如何操作:http://jung.sourceforge.net/doc/api/edu/uci/ics/jung/samples/ShowLayouts.html