Jgraph/awt ,Coloration des graphes

father1988 Messages postés 4 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 20 novembre 2010 - 4 oct. 2010 à 03:05
 Utilisateur anonyme - 9 oct. 2010 à 11:47
bnj,
je suis entrain de travailler sur un projet visant l'amélioration d' un code qui consiste à réduire des graphes,et comme 2 ème objectif est il faut colorier les noeuds du graphe d'une couleur differente à chaque réduction,c'est à dire que une fois je clique sur le bouton réduire,les noeuds du graphe réduit devront se colorer d'une couleur differente de celle des noeuds de l'étape n-1.
en fait le code actuel,permet de colorer tous les noeuds de la meme couleur,et meme quand on réduit,ça change pas.j'ai essayé de définir une fonction dont le parametre est une valeur rand et puis je l'appelle dans la partie définissant le noeud:
GraphConstants.setGradientColor(cell.getAttributes(), new Color(reduire.z+166,reduire.z+170,255-reduire.z));
//z est le valeur retournée par la fonction que j'ai définie en fct de rand().
mais malheureusement ça change pas,la couleur définit initialement reste la meme.
est ce qq un a une idée? je suis vraiment bloquée.
merci d'avance

5 réponses

Utilisateur anonyme
5 oct. 2010 à 11:13
Salut,

Tu peux t'inspirer de ceci:
C'est un exemple qui permet de changer la couleur du texte d'un bouton chaque fois qu'on clique sur ce bouton (dans le listener).

            Color newColorr = (rouge);
            message.setForeground(newColorr);   // couleur du texte à partir du rouge
            Color couleur = new Color((int)(Math.random()*256), // la couleur change
                                                                // a chaque clique sur le bouton
                                 (int)(Math.random()*256),
                                 (int)(Math.random()*256));
            leBouton.setBackground(couleur);


Cordialement,


...\ Dan /...
0
father1988 Messages postés 4 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 20 novembre 2010
6 oct. 2010 à 02:07
merci danimo,pour la réponse

mais je dois avoir dans l'application une chose:
que la couleur d'un noeud du graphe doit changer de maniere degradée,c'est à dire qu'on aura la meme couleur mais qui va se degrader à chaque fois qu'on clique sur le bouton réduire,chose non faite avec Random.

Est ce que vous avez une idée,je suis bloquée la dessus.

Merci d'avance.
0
Utilisateur anonyme
6 oct. 2010 à 11:05
Re,

À définir au niveau classe en private:

    private int blue = 0;
    private Color color;



Dans le listener du bouton:

    if(blue > 255) // la valeur maxi étant 255
    blue = 0;
    color = new Color(255, 0, blue); // R, G, B rouge, vert, bleu
//Au prochain clique, la couleur suivante sera celle correspondant au blue ci dessous:
    blue+= 50; //par exemple, mais qui repassera peut être à 0


On peut peut-être aussi jouer avec les valeurs R et G, tout dépend en fait de la couleur initiale et des résultats obtenus qui doivent rester dans les tons de la couleur initiale.

Avec la couleur rouge et blue incrémenté de 50 de 0 à 250 on reste dans les tons, mais avec seulement 6 couleurs nouvelles.

Si on diminue trop l'incrémentation la différence d'une couleur à l'autre est minime, mais bon...

C'est une idée, mais pour savoir si ca peut être utilisé dans ton appli, je manque de code.

Cordialement,



...\ Dan /...
0
father1988 Messages postés 4 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 20 novembre 2010
6 oct. 2010 à 18:14
bnj damino,je suis tout a fait d'accord avec toi,d'ailleurs ce ça dont j'ai pensé au début (RGB),mais voici mes contraintes:

--J'ai un ensemble de noeuds (start,join,....,et end),et chacun doit avoir une couleur,alors quand je mets le Random,il l'exécute pour chaque noeud,donc j'ai des couleurs differents pour les noeuds de la meme graphe et pour la meme phase de réduction.==>or moi je veux que la couleur change d'une réduction à une autre.
--Pour la solution du RGB ,c'est que il ne prend pas l'incrementation faite,par exemple pour votre porposition les couelurs vont etre colorés de rouge,une fois pour toute.

Voici deux codes de deux exemples de noeuds:

public class GraphCell{
public StartCell createStart(Object obj){
StartCell cell = new StartCell(obj);
Dimension d = new Dimension(80,65);
Rectangle rect = new Rectangle(d);
GraphConstants.setBounds(cell.getAttributes(), rect);
GraphConstants.setGradientColor(cell.getAttributes(), (int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
GraphConstants.setOpaque(cell.getAttributes(), true);
DefaultPort port = new DefaultPort();
cell.add(port);
port.setParent(cell);
return cell;
}
public EndCell createEnd(Object obj){

EndCell cell = new EndCell(obj);
Dimension d = new Dimension(80,65);
Rectangle rect = new Rectangle(d);
GraphConstants.setBounds(cell.getAttributes(), rect);
GraphConstants.setGradientColor(cell.getAttributes(),new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
GraphConstants.setOpaque(cell.getAttributes(), true);
DefaultPort port = new DefaultPort();
cell.add(port);
port.setParent(cell);
return cell;
}
}


Ce que je demande est ce qu'il y a pas comment faire pour que les valeurs de Random change de maniere monotone c'est à dire:que tous les neouds prennent la meme valeur(doit etre évaluée une seule fois pour tous les noeuds du graphe) et que les valeurs prennent un sens donné du petit vers le grand ou le contraire c'est à dire si la 1 valeur etait 10,la 2 doit etre >10.

Merci d'avance,et veuillez m'aider stp je suis bloquée la dessus.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
9 oct. 2010 à 11:47
Salut,

Désolé d'avoir tardé à répondre...

"--Pour la solution du RGB ,c'est que il ne prend pas l'incrementation faite,par exemple pour votre porposition les couelurs vont etre colorés de rouge,une fois pour toute."

Je pense que cela fonctionne (puisqu'on a le rouge). Mais comme je le disais plus haut, la différence entre 2 incrémentations est tellement mini qu'on ne la distingue pas.

Le test à faire serait de cliquer une dizaine de fois (ou plus) pour se rendre compte du changement.

Bien entendu le problème ne serait pas résolu pour autant et malheureusement on n'obtendra pas de différence nette dans la même gamme de couleurs sauf entre la première couleur, rouge par exemple et un orange puis un rose. C'est peu sauf si on n'a pas plus de 3 cliques par transaction...

J'ai testé en décrémentant le bleu pour la couleur bleue, le vert pour la couleur verte et le rouge pour la couleur rouge.
C'est un peu mieux on peut retenir 6 ou sept couleurs, mais c'est encore peu, mais encore une fois, tout dépend du nombre de cliques possibles.


...\ Dan /...
0
Rejoignez-nous