Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何配置VisualizationViewer,以便用户可以使用鼠标移动节点?_Java_Jung - Fatal编程技术网

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

Java 如何配置VisualizationViewer,以便用户可以使用鼠标移动节点?,java,jung,Java,Jung,我使用Jung 2.0已经有一段时间了,但是我对软件包附带的各种演示中的所有配置代码有点困惑 有人能告诉我如何配置VisualizationViewer,以便我可以通过单击并拖动图形节点来移动它们吗 下面是我的代码。这是我学习过的各种演示的混合。但我只能用它平移和旋转图形 public class GrafoParticipacaoSocietaria extends JFrame { Graph<VerticeParticipacaoSocietaria, Integer>

我使用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());
    }
}

您可以在Jung网站上找到一个示例,使用编辑添加节点,然后切换到拾取以移动已添加的节点。sourcode可以从check-jung-samples-X.X.X.jar中找到,该类名为GraphEditorDemo


Jung网站的屏幕截图

您可以在Jung网站上找到一个示例,使用编辑添加节点,然后切换到拾取以移动已添加的节点。sourcode可以从check-jung-samples-X.X.X.jar中找到,该类名为GraphEditorDemo

Jung网站的屏幕截图

多亏了,我找到了我想要的代码:

    DefaultModalGraphMouse graphMouse = new DefaultModalGraphMouse();
    graphMouse.setMode(ModalGraphMouse.Mode.PICKING);
    vv.setGraphMouse(graphMouse);
该代码将ModalGraphMouse中的模式更改为拾取模式,允许用户选择和移动节点。

多亏了,我找到了我要查找的代码:

    DefaultModalGraphMouse graphMouse = new DefaultModalGraphMouse();
    graphMouse.setMode(ModalGraphMouse.Mode.PICKING);
    vv.setGraphMouse(graphMouse);
该代码将ModalGraphMouse中的模式更改为拾取模式,允许用户选择和移动节点。

+1&接受帮助我找到问题的解决方案,请参阅。+1&接受帮助我找到问题的解决方案,请参阅。