Края на графике не отображаются с библиотекой JGraph - PullRequest
0 голосов
/ 23 января 2019

Я написал класс на основе библиотеки JGraph, которая немного отредактирована Hello World от команды разработчиков JGraph.У меня проблема с рендерингом моих графиков (возможно, из-за списков для хранения данных), because I see just one node/vertex in graph and nothing more. -that's solved for now, потому что я правильно вижу все узлы / вершины, но нет ребер / соединений.

Изображение моего текущего графа:

image of my graph here

Мои входные данные:

A
B
C
D
E

A,B
B,C
D,E

Данные после разбиения и до первого листинга

listOfNodes: [A, B, C, D, E] (probably, not sure)
nodesA: [A, B, D]
nodesB: [B, C, E]

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

import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.view.mxGraph;

import javax.swing.*;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class RenderGraph extends JFrame{

 List<String> nodesA = new ArrayList<>();
 List<String> nodesB = new ArrayList<>();

 public void getRender(File file) {
     IntFileReaderEngine fr = new FileReaderEngine();
     fr.readFile(file);
     ConsoleProcessor cp = new ConsoleProcessor();

     //Graph creating

     //Getting random number
     Random RandomNumber = new Random();
     int n1 = RandomNumber.nextInt(200) ;
     int n2 = RandomNumber.nextInt(200) ;
     mxGraph graph = new mxGraph();
     Object parent = graph.getDefaultParent();
     graph.getModel().beginUpdate();

     //Lists for storing objects
     List<Object> listOfNodes = new ArrayList<>();
     List<Object> listOfEdges = new ArrayList<>();
     try
     {
         for(int i=0; i<fr.getNodes().size();i++){
             String pom = fr.getNodes().get(i);
             Object point = graph.insertVertex(parent, null, pom, n1, n2, 20, 20);
             listOfNodes.add(point);
         }

         for(String str:fr.getConnections())
         {
             String[] nodes = str.split(",");
             nodesA.add(nodes[0]);
             nodesB.add(nodes[1]);
         }
         for(int i=0; i<nodesA.size(); i++){
             if(nodesA.get(i) != nodesB.get(i)){
                 Object A=null;
                 Object B=null;

                 if(listOfNodes.indexOf(nodesA.get(i)) != -1){

 A=listOfNodes.get(listOfNodes.indexOf(nodesA.get(i)));
                 }

                 if(listOfNodes.indexOf(nodesB.get(i)) != -1){

 B=listOfNodes.get(listOfNodes.indexOf(nodesB.get(i)));
                 }
                 listOfEdges.add(graph.insertEdge(parent, null, "", A, B));
             }
         }
     }
     finally
     {
         graph.getModel().endUpdate();
     }
     mxGraphComponent graphComponent = new mxGraphComponent(graph);
     getContentPane().add(graphComponent);

     RenderGraph frame = new RenderGraph();
     frame.add(graphComponent);
     frame.pack();
     frame.setVisible(true);
 }
}

В результате мне нужны все вершины / узлы и ребра / связи между ними.Как я уже сказал, на самом деле у меня есть just last one node and none connection -solved всех узлов / вершин, но по-прежнему нет ни одного соединения / ребер.

...