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] Animer lien [Trucs & Astuces]


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut [JGraph] Animer lien
    Bonjour,
    je suis en train d'utiliser JGraph mais je ne sais pas comment changer la propriété d'un edge (lien) dynamiquement (ou plutôt comment mettre à jour ce lien dans le GraphLayoutCache).

    Exemple de mon code pour changer la couleur d'un lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DefaultEdge edge = (DefaultEdge) _jgraph.getModel().getRootAt(i);
    Map attrs = new Hashtable();
    GraphConstants.setLineColor(attrs, Color.RED);
    edge.getAttributes().applyMap(attrs);
    _jgraph.getGraphLayoutCache().editCell(edge, attrs);
    Bon visiblement ce n'est pas le bon code vu que je m'en tire avec une bonne vieille NullPointerException sur le dernière ligne
    J'appelle la méthode editCell car je ne sais pas quoi d'autre utiliser....

    Quelqu'un à une idée ??

    Merci d'avance

  2. #2
    Membre averti
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut [Résolu]
    J'ai enfin trouvé comment animer mes flèches. Voici mon code ceux qui sont intérressés ...

    Tout d'abord je déclare un type de flèche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected static enum ArrowType {UP, DOWN, LINK};
    Ensuite une fonction de modification d'attributs :
    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
     
    protected Map setArrow(ArrowType type, int width, Color color) {
            int beginType, endType;
            Map attrs = new Hashtable();
     
            switch (type) {
                case UP:
                    beginType   = GraphConstants.ARROW_TECHNICAL;
                    endType     = GraphConstants.ARROW_NONE;
                break;
     
                case DOWN:
                    beginType   = GraphConstants.ARROW_NONE;
                    endType     = GraphConstants.ARROW_TECHNICAL;
                break;
     
                case LINK:
                    beginType   = GraphConstants.ARROW_NONE;
                    endType     = GraphConstants.ARROW_NONE;
                break;
     
                default:
                    beginType   = GraphConstants.ARROW_NONE;
                    endType     = GraphConstants.ARROW_NONE;
                break;
            }
     
            GraphConstants.setLineWidth(attrs, width);
            GraphConstants.setLineColor(attrs, color);
            GraphConstants.setLineBegin(attrs, beginType);
            GraphConstants.setLineEnd(attrs, endType);
            GraphConstants.setBeginFill(attrs, true);
            GraphConstants.setEndFill(attrs, true);
            GraphConstants.setLabelEnabled(attrs, true);
     
            return attrs;
        }
    Pour finir mon code de parcours de graph :
    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
     
    public void calculOnNode(Node.Type type) {
     
           Map maps = new Hashtable();
     
           for (int i = 0; i < _jgraph.getModel().getRootCount(); i++) {
     
               Object elt = _jgraph.getModel().getRootAt(i);
     
                if (elt != null && elt.getClass() == DefaultGraphCell.class) {
     
                    DefaultGraphCell cell = (DefaultGraphCell) elt;
     
                    // Par exemple ici récuperer votre objet contenu dans la cellule
                    // Dans mon projet, je récupère des "Node"
                    // Node node = (Node) cell.getUserObject();
     
                        PortView pView = _jgraph.getDefaultPortForCell(cell);
                        DefaultPort port = (DefaultPort) pView.getCell();
                        Iterator iE = port.edges();
     
                        // Pour chaque lien...
                        while(iE.hasNext()) {
                            DefaultEdge edge = (DefaultEdge) iE.next();
     
                            // je modifie son aspect
                            if (edge != null) 
                                maps.put(edge, setArrow(ArrowType.UP, 3, Color.GREEN));   
                        }
     
                  // Fin du if
                  }
     
            // Fin du parcours
            }
     
            // Mise à jour de mon graphe
            try {
                _jgraph.getGraphLayoutCache().getModel().edit(maps, null, null, null);
            } catch (Exception e) {
                trace("[ERREUR] "+e.getMessage());
            }
     
    }
    J'utilise une fonction trace (un peu comme le trace en ActionScript) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    protected static void trace(String s) {
            System.out.println(Graph.class.getSimpleName()+ " :: "+s);
        }
    J'espère que ça pourra aider certaines personnes car cette librairie (JGraph) n'est vraiment pas un cadeau à utiliser quand on est un newbie !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jgraph : maintien lien entre graphique et fonctionnel
    Par kenji_getpowered dans le forum 2D
    Réponses: 0
    Dernier message: 11/05/2010, 16h32
  2. Lien vers une anim flash sous forme de popup
    Par ghyosmik dans le forum Flash
    Réponses: 1
    Dernier message: 15/06/2006, 10h28
  3. [FLASH MX] Lien d'une animation Flash vers une page html
    Par tinkye_winkye dans le forum Flash
    Réponses: 10
    Dernier message: 19/01/2005, 10h11
  4. Réponses: 3
    Dernier message: 11/04/2004, 01h05
  5. lien hypertexte dans une anim flash
    Par vedder dans le forum Flash
    Réponses: 17
    Dernier message: 14/01/2004, 14h11

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