2014-01-15 81 views
1

我正在使用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

您可以找到荣格网站here使用Editing上一个例子来添加节点,然后切换到Picking移动已添加的节点。该sourcode是avalaible从SourceFource退房荣次采样XXXjar称为GraphEditorDemo从荣格网站

+0

+1和'接受'帮助我解决我的问题(请参阅[我自己的答案的详细信息](http://stackoverflow.com/a/21189059/2839597))。 – Ricardo

3

感谢GrahamA's answer,我发现代码

enter image description here 屏幕截图我一直在寻找类:

DefaultModalGraphMouse graphMouse = new DefaultModalGraphMouse(); 
    graphMouse.setMode(ModalGraphMouse.Mode.PICKING); 
    vv.setGraphMouse(graphMouse); 

该代码将ModalGraphMouse中的模式更改为PICKING,该模式允许用户选择并移动节点。

+1

这就行了。谢谢! – KillBill

相关问题