Я пытаюсь отобразить свой график на jpanel, и да, я знаю, что для этого есть библиотеки, но я не смог найти ту, которая соответствует моей проблеме.
Проблема: он не чувствует, что динамика c то есть должно быть. Есть ли лучший способ для этого (матрица визуализации в график).
текущая ситуация (это должно выглядеть так) Я думаю добавить соединения и веса позже.
** Вот моя матрица **
int graph[][] =new int[][] { {0, 16, 13, 0, 0, 0},
{0, 0, 10, 12, 0, 0},
{0, 4, 0, 0, 14, 0},
{0, 0, 9, 0, 0, 20},
{0, 0, 0, 7, 0, 4},
{0, 0, 0, 0, 0, 0}
};
public void createNodes(int[][] graph, String[] str) {
//remove later
buttons = new JButton[graph.length];
isVisited = new boolean[graph.length];
int currentX = 40, currentY = 250;
System.out.println("graph length : "+ graph.length);
//source Node
JButton btn = new JButton( 0 + ".");
btn.setEnabled(false);
btn.setBounds(startX, srcY, WIDTH, HEIGHT);
buttons[0] = btn;
jPanel1.add(btn);
isVisited[0] = true;
//nodes between source and sink
for (int i = 0; i < graph.length; i++) {
for (int j = 0; j < graph[i].length -1; j++) {
if(!isVisited[j] && graph[i][j] != 0 && (j%2 != 0)){
btn = new JButton( j + ".");
btn.setEnabled(false);
btn.setBounds(currentX + addX, currentY, WIDTH, HEIGHT);
buttons[i] = btn;
jPanel1.add(btn);
isVisited[j] = true;
currentY += addY;
//problemmy part is here
btn = new JButton( j+1 + ".");
btn.setEnabled(false);
btn.setBounds(currentX + addX, currentY, WIDTH, HEIGHT);
buttons[i+1] = btn;
jPanel1.add(btn);
isVisited[j+1] = true;
currentY += addY;
}
}
currentY = startY;
currentX += addX;
}
//SiNK NODE
btn = new JButton( graph.length-1 + ".");
btn.setEnabled(false);
btn.setBounds((graph.length / 2 ) * 100 + 40 , srcY, WIDTH, HEIGHT);
buttons[graph.length - 1] = btn;
jPanel1.add(btn);
isVisited[graph.length-1] = true;
}