Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
979 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Dessiner de l'uml en java .....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Dessiner de l'uml en java .....

n°996195
rital_5_4
Posté le 28-02-2005 à 18:55:48  profilanswer
 

Bonjour à tous.  
Je voudrais faire une petite appli en java dont le but est de dessiner des diagrammes de classes uml dans le genre de argouml http://www-igm.univ-mlv.fr/~dr/XPO [...] rgoUML.htm mais en plus simplifié ...
Et j'aurai aimez savoir si il n'y aurai pas des composants java qui pourrai m'aider a le faire parce que avec des drawrect et des drawstring ca me parrait mal engagé  :pt1cable:  
Je sais pas si j'ai été clair mais si vous pouviez m'aider ca serai sympa :) help me ...  :)

mood
Publicité
Posté le 28-02-2005 à 18:55:48  profilanswer
 

n°996227
FlorentG
Unité de Masse
Posté le 28-02-2005 à 19:25:15  profilanswer
 

Bah les composants, faut les faire toi-même, avec des drawrect et drawstring :)

n°996234
rital_5_4
Posté le 28-02-2005 à 19:31:08  profilanswer
 

argggggg c ce que j'ai commencé a faire mais je pensais qu'il y avait peu etre plus simple ....  
Pour dessiner une classe je fais un rectangle puis je dessine les attributs avec des drawstring ect ... mais le probleme c'est pour la saisie des attribut alors à part en faisant cela avec des menus déroulants j'ai du mal a voir ...


Message édité par rital_5_4 le 28-02-2005 à 19:31:49
n°996238
FlorentG
Unité de Masse
Posté le 28-02-2005 à 19:32:07  profilanswer
 

Voilà, tu fais une classe genre "boiboite", avec deux-trois variables genre nom, liste des attributs, etc... Après les méthodes pour dessiner sur un objet Graphics2D

n°996250
rital_5_4
Posté le 28-02-2005 à 19:43:49  profilanswer
 

oui ba c pas gagné :s j'étais persuadé qu'il y avait quelque chose d'autres personnes n'aurai d'autres idée ?? svp ...

n°996320
rital_5_4
Posté le 28-02-2005 à 20:45:26  profilanswer
 

alors personne n'a d'idées c'est bien dommage :'(

n°996326
FlorentG
Unité de Masse
Posté le 28-02-2005 à 20:49:13  profilanswer
 

Ben suis mon idée, y'en a pas d'autres, et au moins t'aura la fierté d'avoir fait ton truc de A à Z :D

n°996336
phnatomass
Je m'empare de ton esprit !!
Posté le 28-02-2005 à 20:53:32  profilanswer
 

A vu de nez ça a l'air pas trop dur.
La difficulté c'est la gestion automatique de l'agencement des tes classes.  
A la limite par defaut tu les mets les une à coté des autres et tu offres la possibilité de sauvarder l'agencement manuel.
ps : T'es à la fac de Marne La Vallée ?

n°996350
rital_5_4
Posté le 28-02-2005 à 21:01:15  profilanswer
 

non je suis en iut informatique sur nancy

n°996353
FlorentG
Unité de Masse
Posté le 28-02-2005 à 21:03:09  profilanswer
 

Le plus dur est effectivement l'agencement automatique. Après c'est juste du dessin :)

mood
Publicité
Posté le 28-02-2005 à 21:03:09  profilanswer
 

n°996367
lorill
Posté le 28-02-2005 à 21:10:37  profilanswer
 

l'edition du nom des attributs directement sur le graphique c'est pas si simple non plus, de même pour la sélection, glisser/deposer et cie.

n°996370
phnatomass
Je m'empare de ton esprit !!
Posté le 28-02-2005 à 21:12:28  profilanswer
 

rital_5_4 a écrit :

non je suis en iut informatique sur nancy


C'est vrai que pour un IUT ce n'est pas hyper trivial comme exo.
Vous devez faire de l'introspection pour créer les diagrammes ?

n°996373
rital_5_4
Posté le 28-02-2005 à 21:15:01  profilanswer
 

heu c'est quoi que tu appel de l'introspection ??? :$
"l'edition du nom des attributs directement sur le graphique c'est pas si simple non plus" oui c'est l'un des problèmes également

n°996726
elianor
bannie 17 fois
Posté le 01-03-2005 à 07:42:06  profilanswer
 

[:cupra]


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
n°996923
raytaller
Posté le 01-03-2005 à 11:17:22  profilanswer
 

salut
 
je bosse sur un soft de gestion d'emplois du temps avec des blocs à redimentionner à déplacer, magnétisé sur une grille et tout.
 
Moi j'ai décidé de faire tout à la main, mais c'est vrai que j'ai pas à faire d'entrée texte sur mon canvas.. ça c'est ce qui me parraît le plus relou.
 
Si je peux t'aider, voilà ce que je me suis concocté (j'ai lutté un peu quand même)
c'est 2 fonctions qui affichent une chaîne de caractères dans un rectangle de taille quelconque.
 
Si le rectangle est pas au ratio, ça centre. Si le Graphics que tu passes est un graphics2D avec de l'anti aliasing, ce sera anti aliasé.
 
Désolé, c'est en français, c'est parce que je suis pas seul sur ce coup et ... enfin bon voilà. Et puis je sais pas si c'est vraiment optimisé mais ça marche.
 
voilà ce que je fais avec :  
http://tom.rethaller.free.fr/vrac/Opale_preview1.png
 
 

Code :
  1. public static void dessinerTexte(String texte, Font font, Graphics g,
  2.   float x, float y, float largeur, float hauteur) {
  3.  Graphics2D graph=(Graphics2D)g;
  4.  FontRenderContext frc=graph.getFontRenderContext();
  5.  GlyphVector gv=font.createGlyphVector(frc, texte.toCharArray());
  6.  Shape outline=gv.getOutline();
  7.  Rectangle2D mb=gv.getVisualBounds();
  8.  double sx=largeur/mb.getWidth();
  9.  double sy=hauteur/mb.getHeight();
  10.  double sc=Math.min(sx, sy);
  11.  AffineTransform sav=graph.getTransform();
  12.  AffineTransform tras=new AffineTransform();
  13.  tras.translate(-mb.getMinX()*sc, -mb.getMinY()*sc);
  14.  tras.scale(sc, sc);
  15.  Shape s=tras.createTransformedShape(outline);
  16.  tras=new AffineTransform();
  17.  if (sy>=sx) {
  18.   tras.translate(x, y+(hauteur-mb.getHeight()*sc)/2);
  19.  } else {
  20.   tras.translate(x+(largeur-mb.getWidth()*sc)/2, y);
  21.  }
  22.  graph.setTransform(tras);
  23.  graph.fill(s);
  24.  graph.setTransform(sav);
  25. }
  26. public static void dessinerTexteVertical(String texte, Font font,
  27.   Graphics g, float x, float y, float largeur, float hauteur) {
  28.  Graphics2D graph=(Graphics2D)g;
  29.  FontRenderContext frc=graph.getFontRenderContext();
  30.  GlyphVector gv=font.createGlyphVector(frc, texte.toCharArray());
  31.  Shape outline=gv.getOutline();
  32.  Rectangle2D mb=gv.getVisualBounds();
  33.  double sx=hauteur/mb.getWidth();
  34.  double sy=largeur/mb.getHeight();
  35.  double sc=Math.min(sx, sy);
  36.  AffineTransform sav=graph.getTransform();
  37.  AffineTransform tras=new AffineTransform();
  38.  tras.translate(-mb.getMinX()*sc, -mb.getMinY()*sc);
  39.  tras.scale(sc, sc);
  40.  Shape s=tras.createTransformedShape(outline);
  41.  tras=new AffineTransform();
  42.  if (sx>=sy) {
  43.   tras.translate(x, hauteur+y-(hauteur-mb.getWidth()*sc)/2);
  44.  } else {
  45.   tras.translate(x+(largeur-mb.getHeight()*sc)/2, hauteur+y);
  46.  }
  47.  tras.rotate(-Math.PI/2);
  48.  graph.setTransform(tras);
  49.  graph.fill(s);
  50.  graph.setTransform(sav);
  51. }


 
 
bon courage :D

n°996934
FlorentG
Unité de Masse
Posté le 01-03-2005 à 11:27:18  profilanswer
 

Chelou tes fonctions :??:

n°996938
coffeeman
Posté le 01-03-2005 à 11:29:26  profilanswer
 

FlorentG a écrit :

Chelou tes fonctions :??:


 
C'est le cas de le dire. En plus, elles sont statiques, ça me semble bien parti pour faire un design pas élégant ça :o


---------------
Moi, j'aime pas les signatures - J'écoute actuellement :
n°996941
FlorentG
Unité de Masse
Posté le 01-03-2005 à 11:31:05  profilanswer
 

Concrètement, elle fais quoi la fonction "dessinerTexte", par rapport à Graphics2D.drawString ?

n°997437
rital_5_4
Posté le 01-03-2005 à 19:37:32  profilanswer
 

Merci pour le code. Alors moi ce que j'ai fait c'est que j'ai fait une classe MaClasse qui symbolise une classe dans le diagramme UML. La classe MaClasse derive de rectangle (pour le dessin) et contient des attributs Vector dans lequels je stocke les valeurs des attributs, méthodes que l'utilisateur ajoute dans la classe UML via l'interface.
J'ai ensuite defini la méthode paint avec des drawString des drawRect et des drawLignes (pour découpé mon rectangle). Jeparcours les listes et je fait des drawString au bon endroit pour afficher les attributs ect de la classe uml ... Bien sure il faut augmenter la taille du rectangle enfin il y a pas de trucs a gerer .. j'ai commencé a le faire seulement j'aimerai bien savoir si je suis bien partie ou alors si je me plante complement ...  
J'attends vos avis, j'espere que j'ai été a peu pres clair ...

n°997449
raytaller
Posté le 01-03-2005 à 19:50:03  profilanswer
 

coffeeman a écrit :

C'est le cas de le dire. En plus, elles sont statiques, ça me semble bien parti pour faire un design pas élégant ça :o


 
 
c'est dans une class Utils, c'est des fonctions génériques qui servent à tout le monde, ça nécessite pas de sous-classer Graphics2D à mon goût...
 
 

FlorentG a écrit :

Concrètement, elle fais quoi la fonction "dessinerTexte", par rapport à Graphics2D.drawString ?


Citation :


 
 
drawString
 
public abstract void drawString(String s,
                                float x,
                                float y)
 
    Renders the text specified by the specified String, using the current text attribute state in the Graphics2D context. The baseline of the first character is at position (x, y) in the User Space. The rendering attributes applied include the Clip, Transform, Paint, Font and Composite attributes. For characters in script systems such as Hebrew and Arabic, the glyphs can be rendered from right to left, in which case the coordinate supplied is the location of the leftmost character on the baseline.
 
    Parameters:
        s - the String to be rendered
        x - the x coordinate of the location where the String should be rendered
        y - the y coordinate of the location where the String should be rendered  
    Throws:
        NullPointerException - if str is null
    See Also:
        setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), Graphics.setFont(java.awt.Font), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)
 
 
 
 
drawString
 
public abstract void drawString(AttributedCharacterIterator iterator,
                                int x,
                                int y)
 
    Renders the text of the specified iterator, using the Graphics2D context's current Paint. The iterator has to specify a font for each character. The baseline of the first character is at position (x, y) in the User Space. The rendering attributes applied include the Clip, Transform, Paint, and Composite attributes. For characters in script systems such as Hebrew and Arabic, the glyphs can be rendered from right to left, in which case the coordinate supplied is the location of the leftmost character on the baseline.
 
    Specified by:
        drawString in class Graphics
 
    Parameters:
        iterator - the iterator whose text is to be rendered
        x - the x coordinate where the iterator's text is to be rendered
        y - the y coordinate where the iterator's text is to be rendered
    See Also:
        setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)
 
 
 
 
drawString
 
public abstract void drawString(AttributedCharacterIterator iterator,
                                float x,
                                float y)
 
    Renders the text of the specified iterator, using the Graphics2D context's current Paint. The iterator must specify a font for each character. The baseline of the first character is at position (x, y) in the User Space. The rendering attributes applied include the Clip, Transform, Paint, and Composite attributes. For characters in script systems such as Hebrew and Arabic, the glyphs can be rendered from right to left, in which case the coordinate supplied is the location of the leftmost character on the baseline.
 
    Parameters:
        iterator - the iterator whose text is to be rendered
        x - the x coordinate where the iterator's text is to be rendered
        y - the y coordinate where the iterator's text is to be rendered
    See Also:
        setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)


 
Tu pensais à laquelle ?
Je vois pas de méthode qui faire entrer une chaine dans un rectagle donné... DrawString(String,float,float) pour X et Y certes, mais width et height ?
Comment tu fais un "fit" à une chaîne de caractères ?
Si y'a déjà un truc qui le fait, je prends.
 
 
 
 
edit : mal quoté la javadoc


Message édité par raytaller le 01-03-2005 à 19:53:47
n°997463
FlorentG
Unité de Masse
Posté le 01-03-2005 à 20:09:21  profilanswer
 

raytaller a écrit :

c'est dans une class Utils, c'est des fonctions génériques qui servent à tout le monde, ça nécessite pas de sous-classer Graphics2D à mon goût...
 
 
[...]
 
Tu pensais à laquelle ?
Je vois pas de méthode qui faire entrer une chaine dans un rectagle donné... DrawString(String,float,float) pour X et Y certes, mais width et height ?
Comment tu fais un "fit" à une chaîne de caractères ?
Si y'a déjà un truc qui le fait, je prends.
 


Bah drawString ne nécessite pas de sous-classer Graphics2D non plus ;)
 
Sinon j'avais pas vu que ça faisait un fit :jap:

n°997862
Bennnou
Posté le 02-03-2005 à 09:51:09  profilanswer
 

rital_5_4 a écrit :

Bonjour à tous.  
Je voudrais faire une petite appli en java dont le but est de dessiner des diagrammes de classes uml dans le genre de argouml http://www-igm.univ-mlv.fr/~dr/XPO [...] rgoUML.htm mais en plus simplifié ...
Et j'aurai aimez savoir si il n'y aurai pas des composants java qui pourrai m'aider a le faire parce que avec des drawrect et des drawstring ca me parrait mal engagé  :pt1cable:  
Je sais pas si j'ai été clair mais si vous pouviez m'aider ca serai sympa :) help me ...  :)


 
Salut,
il existe un truc pas mal pour faire des graphiques de type graphcet, shéma uml, merise et Cie.
Il te fait le calcul automatique de la position des composants graphiques, ce qui entre nous est surement le plus compliqué à réaliser soit même.
 
Pour te mettre sur la piste, voici quelques liens :  
 
graphviz et dot
la page officielle d'AT&T : http://www.research.att.com/sw/tools/graphviz/
la page "opensource" : http://www.graphviz.org
la documentation de dotty http://www.research.att.com/sw/too [...] tguide.pdf
 
grappa
http://www.research.att.com/sw/too [...] rappa.html
la documentation des APIs de grappa http://www.research.att.com/~john/ [...] mmary.html
 
 
 
 
J'espère que l'anglais ne te fait pas peur ;-)

n°997865
coffeeman
Posté le 02-03-2005 à 09:53:15  profilanswer
 

C'est quoi ce pseudo ?


---------------
Moi, j'aime pas les signatures - J'écoute actuellement :
n°997883
FlorentG
Unité de Masse
Posté le 02-03-2005 à 10:01:00  profilanswer
 

coffeeman a écrit :

C'est quoi ce pseudo ?


Hihi, j'me suis aussi dit. Ca doit être parce que "Benou" est déjà pris [:benou]

n°997924
nraynaud
lol
Posté le 02-03-2005 à 10:20:34  profilanswer
 

lorill a écrit :

l'edition du nom des attributs directement sur le graphique c'est pas si simple non plus, de même pour la sélection, glisser/deposer et cie.


héhéhé ... il faut utiliser le même système que dans les JTable ...


---------------
trainoo.com, c'est fini
n°1000230
rital_5_4
Posté le 03-03-2005 à 22:51:09  profilanswer
 

"il faut utiliser le même système que dans les JTable "... en étant plsu precis :) stp

n°1000239
nraynaud
lol
Posté le 03-03-2005 à 23:05:28  profilanswer
 

c'est assez complexe pour un débutant.
 
Y'a un système de renderer et d'editor, un panel "castreur de composants" etc. bref, il faut aller voir.


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Dessiner de l'uml en java .....

 

Sujets relatifs
temps reel en java[Java] Envoi de mail automatique en début de mois
[deb] Probleme Java! MVC![Java] Dessin dans un buffer affiché par paint => problème RESOLU
Dessiner un graphique ss applet Java et ss php[Java] Dessiner une ligne???
[java] dessiner une image ailleurs que dans paint()[JAVA] Dessiner des diagrammes
[JAVA] dessiner avec la souris dans une frame[java-AWT] comment dessiner sur un panel
Plus de sujets relatifs à : Dessiner de l'uml en java .....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR