Добавить имя узла в java 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);

person Wolf Marian    schedule 22.10.2016    source источник
comment
Вы почти там!! то же, что и edgeLabel... нужно сделать vertexLAbel... :)   -  person ΦXocę 웃 Пepeúpa ツ    schedule 22.10.2016


Ответы (1)


Вы почти у цели... вам нужно сделать то же самое, что и с краями...

для краев вы сделали что-то вроде:

 vv3.getRenderContext().setEdgeLabelTransformer(transformer3);

для узлов то же самое... вам нужно setVertexLabelTransformer

добавьте этот сегмент в свой код..

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

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

};
vv3.getRenderContext().setVertexLabelTransformer(transformer);

Редактировать:

вам нужно адаптировать общую карту, чтобы удерживать Integer, String...

в esd вы получите что-то вроде

введите описание изображения здесь

person ΦXocę 웃 Пepeúpa ツ    schedule 22.10.2016
comment
Я попробовал то, что вы сказали, но это не работает, я получаю сообщение об ошибке в setVertexLabelTransformer, я пробовал другие предложенные исправления и получаю тот же результат. - person Wolf Marian; 22.10.2016
comment
да... Я вижу, вам нужно использовать целое число Trasnformer, String, а не String String, как я писал... - person ΦXocę 웃 Пepeúpa ツ; 22.10.2016
comment
теперь я попробовал и работает нормально... Я обновил ответ и добавил скриншот - person ΦXocę 웃 Пepeúpa ツ; 22.10.2016