2013-04-07 1 views
0

Я хотел бы изменить цвет моих ребер с помощью Jgrapht, чтобы я мог отображать соответствие по всему графику. Предположим, что существует ребро между узлами 1 и 2. Я выделим эти узлы в (скажем) красном цвете. Я найду узлы 1 и 2 во всем графике и покажу их в красном цвете и остальных узлах другого цвета. Я вижу, что файл, который создает визуализацию SimpleTouchgraphApplet.java В этом файле я добавляю заявление, как,Jgrapht edge color

setBackground(Color.green); 
setForeground(Color.cyan); 

Я добавил две вышеупомянутые заявлений в разделе инициализации. Я также добавил приведенные ниже утверждения в своей основной функции.

Color defaultBackColor = new Color(0x01, 0x11, 0x44); 
JFrame frame = new JFrame(); 
frame.setBackground(defaultBackColor); 
frame.setForeground(Color.CYAN); 

Однако, я не вижу никаких изменений цвета переднего плана или фона. Пожалуйста, дайте мне знать, где все пошло не так.

ответ

0

Я обнаружил, что окраску края можно добавить в файл TouchGraphConverter.java.

Следующая функция конструирует узлы.

public Node convertToTouchGraph(
    Graph<V, E> graph, 
    TGPanel tgPanel, 
    boolean selfReferencesAllowed) 
    throws TGException 
{ 
    List<V> jgtNodes = new ArrayList<V>(graph.vertexSet()); 
    Node [] tgNodes = new Node[jgtNodes.size()]; 

    // add all the nodes... 
    for (int i = 0; i < jgtNodes.size(); i++) { 
     Node n; 
     if (jgtNodes.get(i) instanceof Node) { 
      // if our JGraphT object was a touchGraph node, add it unaltered 
      n = (Node) jgtNodes.get(i); 
     } else { 
      // create a TG Node with a "label" and "id" equals to the 
      // objects toString() value 
      n = new Node(jgtNodes.get(i).toString()); 

     } 

     // store this for edge-related creation below 
     tgNodes[i] = n; 
     tgPanel.addNode(n); 
     tgNodes[i].setBackColor(Color.RED); 

В последней строке, tgNodes [I] .setBackColor (Color.RED) сделает цвет узла на красный в сгенерированном графике.