2015-12-15 3 views
0

Я пытаюсь решить задачу, когда мне нужно отображать график в Swing. Найдено JGraph framework (который теперь называется JGraphX). В образцах метод graph.insertVertex(...) используется для добавления вершин и метода graph.insertEdge(...) для Edges - нормально работает.Как удалить Vertex в JGraphX ​​lib?

Но как я могу удалить эту вершину впоследствии?

ответ

3

Похоже, вы можете использовать способ удаления вершины mxGraph.removeCells. Я изменил HelloWorld пример, который включается в JGraphX (используя релиз 3.4.1):

import com.mxgraph.swing.*; 
import com.mxgraph.view.*; 
import javax.swing.*; 

/** 
* Adapted from https://github.com/jgraph/jgraphx/blob/master/examples 
*    /com/mxgraph/examples/swing/HelloWorld.java 
*/ 
public class GoodbyeVertex extends JFrame { 
    private static final long serialVersionUID = -2707712944901661771L; 

    public static void main(String[] args) { 
     GoodbyeVertex frame = new GoodbyeVertex(); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     frame.setSize(400, 320); 
     frame.setVisible(true); 
    } 

    public GoodbyeVertex() { 
     super("Hello, World!"); 

     mxGraph graph = new mxGraph(); 
     Object parent = graph.getDefaultParent(); 

     graph.getModel().beginUpdate(); 
     try { 
      Object v1 = graph.insertVertex(parent, null, "Hello", 20, 20, 80, 30); 
      Object v2 = graph.insertVertex(parent, null, "World!", 240, 150, 80, 30); 

      graph.insertEdge(parent, null, "Edge", v1, v2); 

      // Remove a vertex. The related edge is removed as well. 
      graph.removeCells(new Object[]{v1}); 
     } finally { 
      graph.getModel().endUpdate(); 
     } 

     mxGraphComponent graphComponent = new mxGraphComponent(graph); 
     getContentPane().add(graphComponent); 
    } 
}