IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

[JGRAPH]Inserer une cellule dans une cellule


Sujet :

2D Java

  1. #1
    Membre éclairé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 471
    Points : 831
    Points
    831
    Par défaut [JGRAPH]Inserer une cellule dans une cellule
    Bonjour à tous

    Je cherche à faire une appli ou j'utilise JGraph pour représenter une architecture de donnée.

    Pour cela, je dois créer une cellule qui peut contenir d'autres cellule (un parent contenant des enfants). je souhaite donc afficher la cellule mère avec ses enfants. Quand je déplace la mères les enfants doivent rester à la même position dans la mère.

    J'ai essayé ue solution avec le ParentMap , mais cela ne fonctionne pas car la mère ne s'affiche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    import java.awt.Color;
    import java.awt.geom.Rectangle2D;
     
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
     
    import org.jgraph.JGraph;
    import org.jgraph.graph.DefaultCellViewFactory;
    import org.jgraph.graph.DefaultEdge;
    import org.jgraph.graph.DefaultGraphCell;
    import org.jgraph.graph.DefaultGraphModel;
    import org.jgraph.graph.DefaultPort;
    import org.jgraph.graph.GraphConstants;
    import org.jgraph.graph.GraphLayoutCache;
    import org.jgraph.graph.GraphModel;
    import org.jgraph.graph.ParentMap;
     
    public class MySampleCode extends JFrame {
     
      private GraphModel model;
     
      private JGraph graph;
     
      private DefaultGraphCell[] cells = new DefaultGraphCell[2];
     
      public static void main(String[] args) {
        MySampleCode testPC = new MySampleCode();
        testPC.createGraph();
      }
     
      public void createGraph() {
        model = new DefaultGraphModel();
        GraphLayoutCache view = new GraphLayoutCache(model, new DefaultCellViewFactory(), true);
     
        graph = new JGraph(model, view);
     
        cells[0] = createVertex("0", 100, 20, 400, 100, Color.GREEN);
        cells[1] = createVertex("1", 110, 25, 50, 20, Color.BLUE);
     
        ParentMap pm = new ParentMap();
        pm.addEntry(cells[0], null);
        pm.addEntry(cells[1], cells[0]);
     
        graph.getGraphLayoutCache().insert(cells, null, null, pm);
     
        getContentPane().add(graph);
        setTitle("Static Graph");
        setSize(800, 600);
        setVisible(true);
     
        int nodeCount = 1;
        for (int i = 0; i < cells.length; i++) {
          Object cellObject = cells[i];
          if (cellObject instanceof DefaultGraphCell && !(cellObject instanceof DefaultEdge)
              && !(cellObject instanceof DefaultPort)) {
            System.out.println("Node " + nodeCount + ": " + (graph.getModel().getChildCount(cellObject) - 1));
            nodeCount++;
          }
        }
      }
     
      public DefaultGraphCell createVertex(String name, double x, double y, double w, double h, Color bg) {
     
        DefaultGraphCell cell = new DefaultGraphCell(name);
     
        GraphConstants.setBounds(cell.getAttributes(), new Rectangle2D.Double(x, y, w, h));
     
        if (bg != null) {
          GraphConstants.setGradientColor(cell.getAttributes(), bg);
          GraphConstants.setOpaque(cell.getAttributes(), true);
        }
     
        GraphConstants.setBorder(cell.getAttributes(), BorderFactory.createRaisedBevelBorder());
        cell.addPort();
        return cell;
      }
     
      public DefaultEdge createEdge(Object source, Object target, int arrowStyle, String label) {
     
        DefaultEdge edge = new DefaultEdge(label);
     
        edge.setSource(source);
        edge.setTarget(target);
     
        GraphConstants.setLineEnd(edge.getAttributes(), arrowStyle);
        GraphConstants.setEndFill(edge.getAttributes(), true);
        return edge;
      }
    }
    Qui connait la solution
    Merci d'avance
    Page sur Developpez : http://pbriand.developpez.com

  2. #2
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Et si tu créais un groupe? Ca devait le faire, non?

  3. #3
    Membre éclairé
    Avatar de bpy1401
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 471
    Points : 831
    Points
    831
    Par défaut
    Merci pour ta réponse.

    c'est ce que j'ai fait, mais j'ai du pour cela redefinir le veiwer de la classe mère .
    A première JGRAPH n'est pas très adapté pour ce cas, et j'ai bien galéré pour le déplacement du groupe avec ces enfants.

    Je n'ai pas encore tout résolu

    Cordialement
    Page sur Developpez : http://pbriand.developpez.com

Discussions similaires

  1. Réponses: 12
    Dernier message: 30/06/2014, 22h04
  2. Réponses: 2
    Dernier message: 23/03/2014, 12h05
  3. Réponses: 5
    Dernier message: 27/02/2014, 12h09
  4. Réponses: 2
    Dernier message: 13/04/2012, 20h18
  5. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo