java - 如何配置 VisualizationViewer 以便用户可以使用鼠标移动节点?

标签 java jung

我现在使用 Jung 2.0 一段时间了,但我对软件包附带的各种演示中完成的所有配置代码有点困惑。

谁能告诉我如何配置 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());
    }
}

最佳答案

感谢GrahamA's answer ,我找到了我正在寻找的代码:

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

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

关于java - 如何配置 VisualizationViewer 以便用户可以使用鼠标移动节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21145531/

相关文章:

java - 什么是 jung2(java 图形框架)的 maven 存储库 url?

Java:在运行时在另一个面板中添加面板以适应可见区域

java - 为什么 SparseIntArray.equals(Object) 不起作用?

java - 处理 HttpClient (Httpget) 超时

java - 正则表达式吃得太多了

java - 如何使用荣格的埃德蒙兹卡普获得每个边缘的流量?

Java Jung 不兼容类型转换

java - 如何在 Android 中设置警告框,是否有任何 API 可以将数据从应用程序发送到 URL

java - 在网格 jpanel 中复制元素

java - JUNK 和 Java 的鼠标事件