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 :

[Java2D]MouseEvent sur un paint Graphics g


Sujet :

2D Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 45
    Points : 21
    Points
    21
    Par défaut [Java2D]MouseEvent sur un paint Graphics g
    Bonjour!

    J'aimerais faire en sorte que l'utilisateur puisse cliquer sur un graphic (paint Graphics g), en particulier, sur un certain endroit de ce graphic!
    Est-ce que c'est possible?
    Comment faire?

    Utiliser la méthode mousClicked?
    Et ensuite? Comment faire pour cible le clique que sur un endroit définit, et non tout le graphic?

    Merci!!
    [ Modéré par vedaer ]
    -> Ajout du tag dans le titre
    [ Merci de respecter les Règles du Forum ]

  2. #2
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    Salut,

    en fait ton utilisateur agit sur un Container ou un Component et pas sur un Graphics ... Ta méthode paint ou paintComponent est par exemple dans un JPanel, alors il vaut lui ajouter un mouselistener

    ok ?
    Seb

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 45
    Points : 21
    Points
    21
    Par défaut
    Ha ok, mais ce graphic n'est pas dans un panel!
    En fait c'est un truc assez compliqué, mais dans le code de mon applet, y'a une première classe "plublic class planetariumapplet extends Applet{"
    et bien plus loin y'a un nouvelle classe, mais toujours dans le même code, "public class cercle_graphics extends Panel {" et c'est là qu'il y a le "public void paint(Graphics g) {".... alors que sais pas si ça change quelque chose? Mais en tout cas ce Graphics n'est pas sur un panel

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Heu
    Avec mouseclicked oui.

    Pour cibler le clik, utilise le MouseEvent e :
    e.getX() --> abcisse
    e.getY() --> ordonnée

    et tu fais des tests sur les abcisses/ordonnées pour limiter la zone de click.

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 45
    Points : 21
    Points
    21
    Par défaut
    Mais alors pour finir je fais comment pour mettre un MouseListener à mon graphics?? J'en met un, et ensuite un mousecliked?

  6. #6
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    dans cercle_graphics, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class cercle_graphics extends Panel implements MouseListener
    puis dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.addMouseListener(this);
    et ensuite tu impémentes les fonctions du listener dans cette classe ... et puis regardes le tutorial de SUN et les cours de www.developpez.net !

    Seb

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 45
    Points : 21
    Points
    21
    Par défaut
    ok j'vais essayer de me débrouiller, merci!
    mais juste, si j'ai déjà un implements Runnalbe, comment je fais?
    je met juste MouseListener après le Runnable? Ou je dois remettre un implements avant?

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 45
    Points : 21
    Points
    21
    Par défaut
    ha c'était juste histoire de , ^^
    Mais maintenant j'ai une erreur!

    il souligne "public"
    et met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    planetarium.planetariumapplet.cercle_graphics doit être déclaré(e) abstrait(e); il ne définit pas mouseClicked(java.awt.event.MouseEvent) dans planetariumapplet.cercle_graphics à la ligne 521 (521 :3)
    et si je met abstract devant public class....
    il met met une erreur dans l'autre classe, sur le cercle_graphics dessin = new cercle_graphics(); !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    planetarium.planetariumapplet.cercle_graphics est abstrait(e); instantiation impossible à la ligne....

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 45
    Points : 21
    Points
    21
    Par défaut
    Pourquoi est-ce que je ne peux pas mettre de MouseListener à ma classe???

  10. #10
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    tu peux utiliser un MouseAdapter, (qui implémente toutes les méthodes du MouseListener), et tu peux ainsi redéfinir uniquement les méthodes qui t'intéressent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public LaClasse(){
      ...
     
      addMouseListener(new MouseAdapter(){
     
        public void mouseClicked(MouseEvent me){
          ...
        }
     
      });
    }
    Le truc a retenir, c'est que lorsque tu implémente une interface, il faut impérativement implémenter toutes ses méthodes. Pour MouseListener, ces méthodes sont

    • mouseClicked(MouseEvent)
      mouseEntered(MouseEvent)
      mouseExited(MouseEvent)
      mousePressed(MouseEvent)
      mouseReleased(MouseEvent)
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

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

Discussions similaires

  1. Deux trois questions (notamment sur le module Graphics)
    Par drunkskater dans le forum Caml
    Réponses: 2
    Dernier message: 05/11/2010, 20h57
  2. probleme avec paint(Graphics g)
    Par narcis60floyjo dans le forum Graphisme
    Réponses: 5
    Dernier message: 24/12/2009, 22h35
  3. Réponses: 3
    Dernier message: 12/04/2008, 04h14
  4. question sur la classe graphic?
    Par Mickey.jet dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/07/2007, 03h22
  5. MouseEvent sur un bouton pour le retrécir
    Par Dsphinx dans le forum AWT/Swing
    Réponses: 25
    Dernier message: 27/04/2007, 16h48

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