在javajung中添加节点名

在javajung中添加节点名,java,graph,graphics,jung,jung2,Java,Graph,Graphics,Jung,Jung2,我实现了一些图形算法,我想展示它们的一张图。我用的是Jung 2.0 我想向节点添加一个名称。我设法在边上写字,但我也想显示节点的名称 这是我的密码: Graph<Integer, String> graph3 = new DelegateForest<Integer, String>(); graph3.addVertex(1); graph3.addVertex(2); graph3.addVertex(3);

我实现了一些图形算法,我想展示它们的一张图。我用的是Jung 2.0

我想向节点添加一个名称。我设法在边上写字,但我也想显示节点的名称

这是我的密码:

Graph<Integer, String> graph3 = new DelegateForest<Integer, String>();

        graph3.addVertex(1);
        graph3.addVertex(2);
        graph3.addVertex(3);

        graph3.addEdge("RAD-A", 1, 2);
        graph3.addEdge("RAD-B", 1, 3);

        Layout<Integer, String> layout3 = new TreeLayout<Integer, String>((Forest<Integer, String>) graph3);
        VisualizationViewer<Integer, String> vv3 = new  VisualizationViewer<Integer,String>(layout3);

        Transformer<String, String> transformer3 = new Transformer<String, String>() {

            @Override 
            public String transform(String arg0){
                return arg0;
            }
        };

        vv3.getRenderContext().setEdgeLabelTransformer(transformer3);

        transformer3 = new Transformer<String, String>() {
            @Override 
            public String transform(String arg0){
                return arg0;
            }
        };

        final DefaultModalGraphMouse<String,Number> graphMouse3 = new DefaultModalGraphMouse<String,Number>();
        vv3.setGraphMouse(graphMouse3);
        graphMouse3.setMode(ModalGraphMouse.Mode.PICKING);


        JFrame frame3 = new JFrame("Pas 3");
        frame3.getContentPane().add(vv3);
        frame3.pack();
        frame3.setSize(350, 300);
        frame3.setVisible(true);
Graph graph3=newdelegateforest();
图3.添加顶点(1);
图3.添加顶点(2);
图3.添加顶点(3);
图3.附录(“RAD-A”,1,2);
图3.附录(“RAD-B”,1,3);
布局布局3=新树形图((森林)图3);
VisualizationViewer vv3=新的VisualizationViewer(布局3);
变压器变压器3=新变压器(){
@凌驾
公共字符串转换(字符串arg0){
返回arg0;
}
};
vv3.getRenderContext().setEdgeLabelTransformer(transformer3);
transformer3=新变压器(){
@凌驾
公共字符串转换(字符串arg0){
返回arg0;
}
};
final DefaultModalGraphMouse GraphMouse 3=新的DefaultModalGraphMouse();
vv3.设置Graphmouse(graphMouse3);
GraphMouse 3.setMode(ModalGraphMouse.Mode.PICKING);
JFrame frame3=新JFrame(“Pas 3”);
frame3.getContentPane().add(vv3);
框架3.pack();
框架3.设置尺寸(350300);
frame3.setVisible(true);

你就快到了。。。你需要像处理边缘一样

对于边缘,您执行了如下操作:

 vv3.getRenderContext().setEdgeLabelTransformer(transformer3);
对于节点是相同的。。。您需要设置VertexLabelTransformer

将此段添加到代码中

  Transformer<Integer, String> transformer = new Transformer<Integer, String>() {

    @Override
    public String transform(Integer arg0) {
    return arg0.toString();
    }

};
vv3.getRenderContext().setVertexLabelTransformer(transformer);
变压器=新变压器(){
@凌驾
公共字符串转换(整数arg0){
返回arg0.toString();
}
};
vv3.getRenderContext().setVertexLabelTransformer(变压器);
编辑: 您需要调整通用映射以保存整数、字符串

在esd,你会得到这样的东西


你就快到了!!和edgeLabel一样。。。您需要执行vertexLAbel…:)我尝试了您所说的,但不起作用,我在setVertexLabelTransformer中遇到错误,我尝试了其他建议的修复,我得到了相同的结果。是的。。。我明白了,你需要使用一个Trasnformer整数,String,而不是我写的String…现在我尝试了一下,效果很好。。。我更新了答案并添加了一个截图