/* * Created on 8 avr. 2008 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package essai; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import javax.swing.JFrame; import edu.uci.ics.jung.graph.*; import edu.uci.ics.jung.graph.impl.DirectedSparseEdge; import edu.uci.ics.jung.graph.impl.DirectedSparseGraph; import edu.uci.ics.jung.graph.impl.DirectedSparseVertex; import edu.uci.ics.jung.utils.UserData; import edu.uci.ics.jung.visualization.Layout; import edu.uci.ics.jung.visualization.PluggableRenderer; import edu.uci.ics.jung.visualization.ShapePickSupport; import edu.uci.ics.jung.visualization.VisualizationViewer; import edu.uci.ics.jung.visualization.contrib.CircleLayout; import edu.uci.ics.jung.visualization.control.DefaultModalGraphMouse; // "extends JFrame" ci-dessous est necessaire pour que la classe puisse creer des fenetres graphiques public class CreationGraphe extends JFrame { // le constructeur de la classe precise comment sont composees les fenetres graphiques et demande leur affichage. public CreationGraphe(Graph g) { super(); // Objets necessaires pour afficher un graphe de Jung DefaultModalGraphMouse m_graphmouse; PluggableRenderer mainRender = new PluggableRenderer(); Layout mainLayout = new CircleLayout(g); /* how nodes will be placed */ VisualizationViewer VV = new VisualizationViewer(mainLayout, mainRender, new Dimension(500,500)); // un minimum de config VV.setPickSupport(new ShapePickSupport()); /* allow clickable stuff */ VV.setBackground(Color.WHITE); // declare la visu de graphe comme partie d'une fenetre graphique et demande l'affichage this.getContentPane().add(VV); VV.init(); setSize(new Dimension(500,500)); setVisible(true); } // Methode montrant comment creer un graphe public static void main(String[] args) { Graph g = new DirectedSparseGraph(); Vertex v1 = (Vertex) g.addVertex(new DirectedSparseVertex()); Vertex v2 = (Vertex) g.addVertex(new DirectedSparseVertex()); // Petite demo pour associer des informations aux sommets du graphe (comme une Map) String name_key = "nom"; String current_address_key = "addresse"; String current_student_key = "etudiant"; v1.addUserDatum(name_key, "Carl Jung", UserData.SHARED); v2.addUserDatum(name_key, "Sigmund Freud", UserData.SHARED); v1.addUserDatum(current_address_key, "Vienne, Autriche", UserData.SHARED); v1.addUserDatum(current_student_key, v2, UserData.REMOVE); // Freud is a student of Jung! String v1_name = v1.getUserDatum(name_key).toString(); System.out.println("Le 'nom' de v1 est : "+v1_name); v1.setUserDatum(current_address_key, "Bale, Suisse", UserData.SHARED); v1.removeUserDatum(current_student_key); // On ajoute encore 2 sommets et des aretes entre les sommets Vertex v3 = (Vertex) g.addVertex(new DirectedSparseVertex()); Vertex v4 = (Vertex) g.addVertex(new DirectedSparseVertex()); g.addEdge(new DirectedSparseEdge(v3,v4)); g.addEdge(new DirectedSparseEdge(v1,v3)); // si on veut on peut recuperer l'objet arete au passage DirectedEdge e = (DirectedEdge) g.addEdge(new DirectedSparseEdge(v1, v2)); // Pour la visualisation du graphe (simplement les sommets relies pour l'instant CreationGraphe cg = new CreationGraphe(g); } }