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

AWT/Swing Java Discussion :

Probleme avec drawLine


Sujet :

AWT/Swing Java

  1. #1
    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 Probleme avec drawLine
    Bonjour, j'utilise l'api JGraph pour dessiner un graphe et je dois dessiner des liens dynamiques entre mes cellules. C'est à dire je selectionne une cellule source, je clicke sur le bouton pour la création de liens, je drague et lors du relachement sur la cellule cible, je crée mon lien.
    J'arrive à créer mes liens (lignes) mais ca me fait un affichage bizarre lorsque je drague. J'utilise la méthode drawLine pour dessiner mon lien.

    Je mets un exemple de mon code des méthodes mousePressed, mouseDragged et de mouseReleased:
    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
     
    @Override
    		public void mousePressed(MouseEvent arg0) {
    			// TODO Auto-generated method stub
    			JGraph graph = getGraphForEvent(arg0);
    			if (graph != null){
    				DefaultGraphCell cell =  (DefaultGraphCell)graph.getSelectionCell();
    				graph.setMoveable(false);
    				this.startport = graph.getDefaultPortForCell(cell);
    				this.start = this.startport.getLocation();
    			}
    			super.mousePressed(arg0);
    		}
     
    		@Override
    		public void mouseDragged(MouseEvent arg0) {
    			// TODO Auto-generated method stub
    			JGraph graph = getGraphForEvent(arg0);
    			Point2D current = arg0.getPoint();
    			Graphics g = graph.getGraphics();
     
    			if( graph != null) {
    				//paintConnector(Color.RED, Color.BLACK, g ,graph, arg0.getPoint());
    				g.drawLine((int) start.getX(), (int) start.getY(),
    						(int) current.getX(), (int) current.getY());
    			}
    			super.mouseDragged(arg0);
    		}
     
     
    @Override
    		public void mouseReleased(MouseEvent arg0) {
    			// TODO Auto-generated method stub
    			JGraph graph = getGraphForEvent(arg0);
    			if( graph != null) {
    				DefaultGraphCell cell = (DefaultGraphCell)graph.getFirstCellForLocation(arg0.getX(), arg0.getY());
    				if( cell != null) {
    					this.endport = graph.getDefaultPortForCell(cell);
    					DefaultEdge edge = new DefaultEdge();
    					int arrow = GraphConstants.ARROW_CLASSIC;
    					GraphConstants.setLineEnd(edge.getAttributes(), arrow);
    					GraphConstants.setLineColor(edge.getAttributes(), Color.GREEN);
    					GraphConstants.setLineWidth(edge.getAttributes(), 2);
    					GraphConstants.setEndFill(edge.getAttributes(), true);
     
    					edge.setSource(this.startport.getCell());
    					edge.setTarget(this.endport.getCell());
    					graph.getGraphLayoutCache().insertEdge(edge, this.startport.getCell(), this.endport.getCell());
    				}
     
    			}
    			graph.setMoveable(true);
    			graph.setMarqueeHandler(previousMarqueeHandler);
    			super.mouseReleased(arg0);
    		}
    Est ce que quelqu'un pourrait m'aider svp?

    Est ce que j'ai loupé qq chose?

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Euh, juste comme ça, JGraph ne proposerait pas directement l'API de dessin de lignes? C'est plus que probable. Car passer par du Java2D pour faire ça, c'est un peu bourrino dans l'idée. Sans même parler du getGraphics qui ne DOIT en aucun cas être utilisé quand on fait du dessin sur composant (toutes les opérations de dessin sur un composant doivent être réalisée dans le paintComponent, ou dans l'UIDelegate du composant si l'on veut vraiment faire propre).
    Tu ne pourrais pas plutôt créer un cell factice et invisible au quel tu rallie un edge et que tu déplaces au fur et à mesure, au moment ou tu relaches le bouton de la souris, tu changes la target de ton Edge vers le cell voulu. (penser aux repaints lors du drag tout de même).
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    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
    Salut et merci pour ta réponse.
    Je vais essayer de mettre en place ta solution mais je ne comprends pas pourquoi pas ca me dessine ce rectangle et ces lignes bizarres. Est ce que t'aurais une idée pourquoi?

Discussions similaires

  1. [Graphic2D] Probleme d'affichage avec drawLine()
    Par Yannick_from_31 dans le forum 2D
    Réponses: 12
    Dernier message: 23/05/2006, 18h09
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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