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