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 :

Comment bouger une image ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Comment bouger une image ?
    Bonsoir,

    Je commence à développer une simulation de course à pied.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Toolkit kit = Toolkit.getDefaultToolkit();    
    course= kit.getImage("cour.jpg");
     
     public void paintComponent(Graphics comp) {
        Graphics2D comp2D = (Graphics2D) comp;
              if (yPosition == -1)
           yPosition = height - 20;
         if (fcourse != null)  {
          comp2D.drawImage(course, 0, 0, this);
              }
     
           }
    Avec le code ci-dessus, j'affiche mon courreur. J'aimerais ajouter un bouton qui entrainera le déplacement de mon courreur lorsqu'il y aura un clic dessus.

    Pouvez-vous m'aider ?

    Merci

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Pour récupérer les clics de souris, regardes du côté de MouseListener, il y a de quoi t'aider dans la FAQ Java.

    Pour faire bouger l'image, il faut que les coordonnées de l'image soient des variables. Ainsi, tu pourras les modifier à ta guise dans un thread puis modifier l'affichage grâce à la méthode repaint(). Bonne chance.

  3. #3
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut
    MouseListener.mouseClicked:http://javasearch.developpez.com/j2s...#method_detail
    [edit]grilled![/edit]

  4. #4
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Citation Envoyé par JMLLB
    Ton lien ne fonctionne pas .

    [edit] Il remarche

    Comment utiliser MouseListener

    et la doc .

    Bonne chance.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je vais étudier çà.

    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    J'ai réussi à rendre le bouton actif. J'arrive à afficher un message sur le clic mais je n'arrive pas à trouver le code pour pouvoir modifier la position de l'image.

    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
    Toolkit kit = Toolkit.getDefaultToolkit();    
    course= kit.getImage("cour.jpg");
     
     public void paintComponent(Graphics comp) {
        Graphics2D comp2D = (Graphics2D) comp;
              if (yPosition == -1)
           yPosition = height - 20;
         if (fcourse != null)  {
          comp2D.drawImage(course, 0, 0, this);
              }
     
    public void repaint (int x, int y)
    {
    comp2D.drawImage(course, x, y, this);
    }
     
           }
    J'appelle repaint(60,350) sur le clic du bouton mais il ne se passe rien.

    Je pense que la méthode repaint n'est pas bien codée.

    Pouvez-vous m'aider s'il vous plait ?

    Merci

  7. #7
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Désolé je ne savais pas que tu ne connaissais pas la méthode repaint() .

    La méthode repaint sert à rafraichir l'affichage d'un composant, après par exemple la modification d'une image.
    Si tu utilises un JPanel ou un Canvas, ou un autre container, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monContainer.repaint();
    Et cela après avoir modifié les positions de l'image.

    ça te donne :
    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
    // [...]
    int x = 0;
    int y = 0;
    // [...]
    public void paintComponent(Graphics comp) {
        Graphics2D comp2D = (Graphics2D) comp;
              if (yPosition == -1)
           yPosition = height - 20;
         if (fcourse != null)  {
          comp2D.drawImage(course, x, y, this);
              }
    }
     
    public void modifyImagePosition(int x, int y) {
            this.x = x;
            this.y = y;
            repaint();// la méthode rappelle la méthode paintComponent
            // comme on vient de modifier x et y, et que la position de l'image est relative à ces variables, l'image prend la nouvelle position !
    Voilà, après tu peux t'amuser à faire bouger l'image, dans un autre thread, en lui affectant une nouvelle position toutes les secondes par exemples. Bonne chance.

Discussions similaires

  1. comment placer une image et la faire bouger
    Par walido dans le forum MFC
    Réponses: 3
    Dernier message: 30/03/2007, 14h18
  2. Comment mettre une image en fond de JFrame
    Par marc26 dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2004, 17h57
  3. [Crystal Reports 9] comment insérer une image dans Détails
    Par VVE dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2003, 17h06
  4. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 15h54
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 20h06

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