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 :

Problème de dessin en Java pour tracer des figures géométriques


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 18
    Par défaut Problème de dessin en Java pour tracer des figures géométriques
    Bonsoir à tous,

    je débute dans le développement d'interfaces graphiques en java. Et j'ai un problème qui me ronge depuis un bout de temps...

    Voilà j'essaye de créer une fonction qui me permettra de tracer des droites... (comme sur Paint) j'ai trouvé comment tracer des courbes et je bloque sur les droites...
    Si quelqu'un pourrait svp me dire quel est le problème dans mon code...
    Voila la classe qui permet de tracer une droite
    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
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Rectangle;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    import java.awt.geom.Point2D;
    import java.awt.geom.Rectangle2D;
    import java.util.Vector;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
        public class Droite extends JPanel implements MouseMotionListener,MouseListener
        { 
            Vector<Rectangle2D> lines;
            boolean ligneEncours;
            Point2D p1;
            Point2D p2;
            private Graphics c;
     
            public Droite(Graphics g)
            {
                super();
                c = g;
                lines = new Vector<Rectangle2D>();
                ligneEncours = false;
                this.addMouseListener(this);
                this.addMouseMotionListener(this);
            }
     
            @Override
            public void paint(Graphics g)
            {
                super.paint(g);
     
                if(ligneEncours)
                {
                    g.setColor(Color.GRAY);
                    g.drawLine((int)p1.getX(),(int)p1.getY(),(int)p2.getX(),(int)p2.getY());
                }
                g.setColor(Color.BLACK);
                for(int i = 0 ; i < lines.size();i++)
                {
                    Rectangle2D r =  lines.get(i);
                    g.drawLine((int)r.getX(),(int)r.getY(),(int)r.getWidth(),(int)r.getHeight());
                }
            }
     
            public void mouseDragged(MouseEvent e)
            { 
                if(ligneEncours)
                {
                    p2 = e.getPoint();
                    repaint();
                }
            }
     
            public void mousePressed(MouseEvent e)
            {
                ligneEncours = true;
                p1 = e.getPoint();
            }
     
            public void mouseReleased(MouseEvent e)
            {
                if(ligneEncours)
                {
                Rectangle r = new Rectangle((int)p1.getX(),(int) p1.getY(), e.getX(), e.getY());
                lines.add(r);
                ligneEncours = false;
                }
                repaint();
            }
     
            public void mouseExited(MouseEvent e)
            {
                ligneEncours = false;
            }
     
            public void mouseEntered(MouseEvent e){}
            public void mouseMoved(MouseEvent e){}
            public void mouseClicked(MouseEvent e){}
        }
    Lafonction dans une autre classe qui fait appel à la classe Droite qui s'appelle Dessinfigure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void traceligne(Color c){
    		Graphics g = getGraphics();
    		g.setColor(c);
    		Droite tl = new Droite(g);
    		setVisible(true);
    		this.addMouseMotionListener(tl);
    		this.addMouseListener(tl);
    	}

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ensimag
    Inscrit en
    Octobre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ensimag
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 57
    Par défaut
    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
    91
    92
    93
    94
    95
    96
    97
    98
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Rectangle;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    import java.awt.geom.Point2D;
    import java.awt.geom.Rectangle2D;
    import java.util.Vector;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
        public class Droite extends JPanel implements MouseMotionListener,MouseListener
        { 
            Vector<Rectangle2D> lines;
            boolean ligneEncours;
            Point2D p1;
            Point2D p2;
            private Graphics c = this.getGraphics();
     
            public Droite()
            {
                super();
                lines = new Vector<Rectangle2D>();
                ligneEncours = false;
                this.addMouseListener(this);
                this.addMouseMotionListener(this);
            }
     
            @Override
            public void paint(Graphics g)
            {
                super.paint(g);
     
                if(ligneEncours)
                {
                    g.setColor(Color.GRAY);
                    g.drawLine((int)p1.getX(),(int)p1.getY(),(int)p2.getX(),(int)p2.getY());
                }
                g.setColor(Color.BLACK);
                for(int i = 0 ; i < lines.size();i++)
                {
                    Rectangle2D r =  lines.get(i);
                    g.drawLine((int)r.getX(),(int)r.getY(),(int)r.getWidth(),(int)r.getHeight());
                }
            }
     
            public void mouseDragged(MouseEvent e)
            { 
                if(ligneEncours)
                {
                    p2 = e.getPoint();
                    repaint();
                }
            }
     
            public void mousePressed(MouseEvent e)
            {
                ligneEncours = true;
                p1 = e.getPoint();
            }
     
            public void mouseReleased(MouseEvent e)
            {
                if(ligneEncours)
                {
                Rectangle r = new Rectangle((int)p1.getX(),(int) p1.getY(), e.getX(), e.getY());
                lines.add(r);
                ligneEncours = false;
                }
                repaint();
            }
     
            public void mouseExited(MouseEvent e)
            {
                ligneEncours = false;
            }
     
            public void mouseEntered(MouseEvent e){}
            public void mouseMoved(MouseEvent e){}
            public void mouseClicked(MouseEvent e){}
     
            public static void main(String s[]){
     
                 java.awt.EventQueue.invokeLater(new Runnable() {
     
                public void run() {
                    Droite d = new Droite();
                    JFrame f  = new JFrame();
                    f.add(d);
                    f.setSize(300, 300);
                    f.setVisible(true);
                }
            }); 
     
            }
        }
    il faut que tu enlèves Graphics deton constructeur ta classe extends de JPanel qui a son propre objet Graphics avec la méthode this.getGraphics()
    est je l'ai directement affecter à ta variable c pour ne pas trop changer ton code tu peux tester j'ai ajouter un main rapidement !!voila si c'est résolu cliques sur bouton resolu

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 18
    Par défaut Re
    Bonsoir,

    Merci beaucoup de ta réponse et je confirme que le code marche...

    Ce topic est résolu

    Merci encore... trop bien.... gg

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

Discussions similaires

  1. Problèmes pour tracer des graphiques avec une macro
    Par Margoooot dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/08/2011, 17h19
  2. Solution de reporting Open Source en Java pour générer des rapports Word, RTF ?
    Par jmax_ dans le forum Autres outils décisionnels
    Réponses: 3
    Dernier message: 19/06/2006, 09h53
  3. Réponses: 6
    Dernier message: 22/11/2005, 17h08
  4. Recherche de composant pour tracer des lignes
    Par n1portki dans le forum Composants VCL
    Réponses: 5
    Dernier message: 21/09/2005, 01h44
  5. Recherche de source pour tracer des codes barres
    Par Tardiff Jean-François dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/10/2004, 16h05

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