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 :

Line2D & MouseEvent


Sujet :

2D Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 56
    Points : 53
    Points
    53
    Par défaut Line2D & MouseEvent
    Bonsoir ,
    Je viens juste de commencer avec le dessin 2D et donc besoin d'aide !
    Mon but c'est que le programme dessine une seule ligne (x) à chaque fois que je clique sur jPanel2 (la même ligne sera redessinée ailleurs celons les cordonnées).
    J'ai donc écrit ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    java.awt.event.MouseListener l ;
    java.awt.event.MouseEvent e ;
        Line2D x = new Line2D.Double(200, 150, l.mouseClicked(e.getX()), l.mouseClicked(e.getY()));
     
    private void jPanel2MouseClicked(java.awt.event.MouseEvent evt) {                                     
     
            Graphics2D a = (Graphics2D) jPanel2.getGraphics();
            a.setColor(Color.BLACK);
            a.setStroke(new BasicStroke(2));
            a.draw(x);
    }
    Ceci dit , j'ai une erreur à la 3eme ligne du code , le programme souligne e.getX() et e.getY() en étant des erreurs.
    Merci d'avance et bonne nuit à tout le monde :3

  2. #2
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Bonjour,

    Citation Envoyé par mohamed996 Voir le message
    Ceci dit , j'ai une erreur à la 3eme ligne du code , le programme souligne e.getX() et e.getY() en étant des erreurs.
    Bah qu'est-ce qu'elle fait là cette ligne????

    Le premier réflexe à avoir quand tu as une erreur, c'est de lire le message d'erreur... souvent il te dit ce qui cloche!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 56
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par plegat Voir le message
    Bonjour,



    Bah qu'est-ce qu'elle fait là cette ligne????

    Le premier réflexe à avoir quand tu as une erreur, c'est de lire le message d'erreur... souvent il te dit ce qui cloche!
    Re;
    Ça dit qu'un Mouse Event est requit à la place de getX()/getY() qui sont des int(Pièce Jointe pour plus d'infos).
    Enfin d'après ce que j'ai comprit , je suis qu'un débutant :p
    Bonne journée !
    Nom : Erreur Java.PNG
Affichages : 125
Taille : 3,3 Ko

  4. #4
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Moi pour avoir les coordonnées de ma souris je fait dans "public class Panel extends JPanel()":
    private static int mX = 0, mY = 0;

    puis dans paintComponent:
    mX = MouseInfo.getPointerInfo().getLocation().x-getLocationOnScreen().x;
    mY = MouseInfo.getPointerInfo().getLocation().y-getLocationOnScreen().y;

    Avec le "import java.awt.MouseInfo;" qui va bien.
    Et avec les getMX et getMY pour la beauté des yeux mais pas que.
    Parce que je suis pas sur que ca marche le coup de e. getX() et e. getY().
    Bon courage.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    @Pecose, ça ne répond pas vraiment à la question posée. Déjà ton code est non évènementiel, et complètement hors contexte : le problème posé n'a pas vraiment de lien avec la souris mais avec le scope des variables et la façon d'organiser son code.

    Reprenons le code de @Mohamed996
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    java.awt.event.MouseListener l ;
    java.awt.event.MouseEvent e ;
        Line2D x = new Line2D.Double(200, 150, l.mouseClicked(e.getX()), l.mouseClicked(e.getY()));
     
    private void jPanel2MouseClicked(java.awt.event.MouseEvent evt) {                                     
     
            Graphics2D a = (Graphics2D) jPanel2.getGraphics();
            a.setColor(Color.BLACK);
            a.setStroke(new BasicStroke(2));
            a.draw(x);
    }

    On voit que dans ce code, il y a une méthode d'écouteur de clic de souris, et qu'on créé la ligne à afficher en dehors de cette méthode, en espérant accéder aux coordonnées fournis par l'évènement. Vu que la variable evt n'est pas accessible en dehors de la méthode, on a créé une variable bidon non initialisée et on essaye d'invoquer sur une autre variable, pas plus initialisée, dont on invoque la méthode mouseClicked avec les hypothétiques coordonnées de l'évenement e (qui n'existe pas, puisque non initialisée) : or X comme Y sont des int, et la méthode mouseClicked a un argument de type MouseEvent : deux types totalement différents, d'où le message d'erreur précisé dans le second post.

    Le bon code, remis dans le bon ordre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    private void jPanel2MouseClicked(java.awt.event.MouseEvent evt) {                                     
     
            Graphics2D a = (Graphics2D) jPanel2.getGraphics();
     
            Line2D x = new Line2D.Double(200, 150, evt.getX(),  evt.getY());
            a.setColor(Color.BLACK);
            a.setStroke(new BasicStroke(2));
            a.draw(x);
     
    }
    Bon, ce code ne réalise pas vraiment ce qui est demandée dans la question initiale (on dessine en direct, mais au redessin la ligne sera perdue, donc non redessinée).

    Il faudrait faire plutôt comme ça :


    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
     public class Machin extends JPanel {
     
    private Line2D x;
     
    public Machin {
            x = new Line2D.Double(200, 150, 200,150);
            a.setColor(Color.BLACK);
            a.setStroke(new BasicStroke(2));
            addMouseListener((evt)-> jPanel2MouseClicked(evt)); // ou en java avant 8, addMouseListener(new MouseAdapter(){ public void mouseClicked(java.awt.event.MouseEvent evt){ jPanel2MouseClicked(evt);} ... });
    }
     
    public void paint(Graphics2D g) {
     
            g.draw(x);
    }
     
     
    private void jPanel2MouseClicked(java.awt.event.MouseEvent evt) {                                     
     
            x.setLine(200, 150, evt.getX(),  evt.getY());
            repaint();
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 56
    Points : 53
    Points
    53
    Par défaut
    Merci de votre réponse, malgré que c'est trop tard :p , je reconnais que mon code de la dernière fois n'avait aucun sens en faite

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

Discussions similaires

  1. [Débutant]MouseEvent et InputEvent
    Par lejimi dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 09/11/2004, 19h41
  2. [Java2D]MouseEvent sur un paint Graphics g
    Par tahiti bob dans le forum 2D
    Réponses: 9
    Dernier message: 09/10/2004, 22h15
  3. Réponses: 7
    Dernier message: 03/08/2004, 16h33

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