java матрица для визуализации взвешенного графа - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь отобразить свой график на 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;
    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...