我正在使用Jung 2.0一段時間,但我對與包裝一起提供的各種演示中完成的所有配置代碼有點困惑。如何配置VisualizationViewer,以便用戶可以使用鼠標移動節點?
任何人都可以告訴我如何配置VisualizationViewer,以便通過單擊並用鼠標拖動它們來移動圖形節點?
我的代碼如下。這是我研究的各種演示的組合。但我只能用它平移和旋轉圖形。
public class GrafoParticipacaoSocietaria extends JFrame {
Graph<VerticeParticipacaoSocietaria, Integer> graph;
VisualizationViewer<String, String> vv;
Layout<VerticeParticipacaoSocietaria, Integer> layout;
public GrafoParticipacaoSocietaria(Graph<VerticeParticipacaoSocietaria, Integer> grafoPart) {
super("Participação Societária");
graph = grafoPart;
layout = new ISOMLayout(graph);
final VisualizationModel visualizationModel = new DefaultVisualizationModel(layout);
vv = new VisualizationViewer(visualizationModel);
vv.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.CNTR);
vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<String>());
vv.setForeground(Color.blue);
getContentPane().add(vv);
// this class will provide both label drawing and vertex shapes
VertexLabelAsShapeRenderer<String, String> vlasr = new VertexLabelAsShapeRenderer<String, String>(
vv.getRenderContext());
vv.getRenderContext().setVertexShapeTransformer(vlasr);
vv.getRenderContext().setVertexLabelRenderer(new DefaultVertexLabelRenderer(Color.lightGray));
vv.getRenderContext().setEdgeDrawPaintTransformer(new ConstantTransformer(Color.lightGray));
vv.getRenderContext().setEdgeStrokeTransformer(new ConstantTransformer(new BasicStroke(1.0f)));
// customize the renderer
// vv.getRenderer().setVertexRenderer(new MyGradientVertexRenderer<String, String>(Color.cyan, Color.white, true));
vv.getRenderer().setVertexLabelRenderer(vlasr);
vv.setGraphMouse(new DefaultModalGraphMouse());
}
}
+1和'接受'幫助我解決我的問題(請參閱[我自己的答案的詳細信息](http://stackoverflow.com/a/21189059/2839597))。 – Ricardo