2016-10-22 12 views
1

Я реализовал некоторые алгоритмы графа, и я хочу показать их. Я использовал Jung 2.0Добавить имя узла в java jung

Я хочу добавить имя в узел. Мне удалось написать по краям, но я хочу также показать имя узла.

Вот мой код:

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); 
+0

вы почти там! то же, что и edgeLabel ... вам нужно сделать vertexLAbel ... :) –

ответ

2

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

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

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); 

Edit:

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

на Оурах вы будете получить что-то вроде

enter image description here

+0

Я пробовал то, что вы сказали, но он не работает, я получаю ошибку в setVertexLabelTransformer, я пробовал другие предлагаемые исправления, и я получаю тот же результат. –

+0

yeap ... Я вижу, вам нужно использовать целое число Trasnformer, String, а не String String, как я написал ... –

+0

теперь я попробовал и отлично работает ... Я обновил ответ и добавил скриншот –