Перекомпоновка графа JUNG после добавления вершин

Предположим, у меня есть визуализированный граф JUNG, а затем я хочу добавить в граф вершины и ребра. Я попытался перекрасить вьювер, но расположение новых вершин неправильное:

UndirectedGraph<Integer, String> g = new UndirectedSparseGraph<>();
g.addVertex(1);
g.addVertex(2);
g.addVertex(3);
g.addEdge("A", 1,2);
g.addEdge("B", 2,3);

Layout<Integer, String> layout = new CircleLayout<>(g);
layout.setSize(new Dimension(500, 500));
VisualizationViewer<Integer,String> vv =
        new VisualizationViewer<>(layout);
vv.setPreferredSize(new Dimension(500, 500));

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);

frame.pack();
frame.setVisible(true);

try{Thread.sleep(5000);}
catch(Exception ex){}

g.addVertex((Integer)4);
g.addEdge("C", 1,4);
vv.repaint();

Есть ли способ изменить макет графа после добавления вершин и ребер?


person TwiNight    schedule 05.11.2015    source источник


Ответы (1)


Согласно Джошуа О'Мададхайн, вам необходимо создать новый макет с обновленным графиком и обновить средство просмотра визуализации:

public static void main(String[] args) {
        UndirectedGraph<Integer, String> g = new UndirectedSparseGraph<>();
        g.addVertex(1);
        g.addVertex(2);
        g.addVertex(3);
        g.addEdge("A", 1, 2);
        g.addEdge("B", 2, 3);

        Layout<Integer, String> layout = new CircleLayout<>(g);
        layout.setSize(new Dimension(500, 500));
        VisualizationViewer<Integer, String> vv = new VisualizationViewer<>(layout);
        vv.setPreferredSize(new Dimension(500, 500));

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(vv);

        frame.pack();
        frame.setVisible(true);

        try {
            Thread.sleep(2000);
        } catch (Exception ex) {
        }

        g.addVertex((Integer) 4);
        g.addEdge("C", 1, 4);
        vv.setGraphLayout(new CircleLayout<>(g));

        // vv.repaint();
    }

Ссылка: динамическое обновление JUNG Tree Layout

person Moh-Aw    schedule 06.11.2015