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

Graphisme Java Discussion :

comment mettre une image animée


Sujet :

Graphisme Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 19
    Par défaut comment mettre une image animée
    voila j'ai un fichier GIF qui est sensé bouger
    mais il ne bouge pas

    sinon j'ai toutes les image qui compose ce GIF
    donc je pensais faire

    un tableau avec toutes ces image
    et un thread pour afficher tout les 10ms un nouvelle image

    Mais je ne sais pas comment faire

    si qqn pouvais m'aider
    merci

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    Il me semble qu'il est possible d'afficher des gif animés, mais je ne l'ai jamais fait.

    Pour la seconde solution, qu'est-ce qui te pose problème :
    - créer un thread ?
    - exécuter une tâche toutes les 10 ms ? (Voir aussi TimerTask)
    - affecter une image à un composant ?

    Je te conseille de partir sur le schéma suivant :
    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
    public class GIFComponent extends JLabel implements Runnable {
     
      public Image[] images;
     
      // Construit le composant
      public GIFComponent(Image[] images) {
        this.images = images;
        ...
      }
     
      // Gère l'affichage des images
      // Le contenu changera selon le choix : Thread ou TimerTask
      public void run() {
     
      }
    }
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut
    javax.swing.Timer et pas java.util.Timer comme moi je faisait .
    http://java.sun.com/products/jfc/tsc/articles/timer/

  4. #4
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Citation Envoyé par orelero
    javax.swing.Timer et pas java.util.Timer comme moi je faisait.
    Ah, ben ok, bien vu, bien dit. Merci pour l'info, je tâcherai de m'en souvenir.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  5. #5
    Membre éclairé Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Par défaut
    voila j'ai un fichier GIF qui est sensé bouger
    mais il ne bouge pas
    J'ai eut l'occasion d'essayer dans un JButton et ca fonctionne.

  6. #6
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 19
    Par défaut
    totu d'abord merci de vos reponse

    j'ai reflechi et meme si un gif amrchais il m'aurais fallu un thread

    mais en faite le probleme c'est que je ne sais pas faire un thread
    donc j'ai essayer de regarder votre tutoriel

    // doit avance tant qu'il ne rencontre pas bloc
    public run() {
    int i = 0;
    tant que (non bloc) faire
    try{
    afficher(image[i]);
    i++;
    Thread.sleep(10);
    }
    catch ( je ne sais pas ce qu'il faut mettre ici) {
    ni la
    }
    }
    }
    voila si vous pouviez me dire si ca va, et m'aider a remplir la fin
    merci

  7. #7
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    catch ( je ne sais pas ce qu'il faut mettre ici) {
    ni la
    }
    tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    catch (InterruptedException ie) {
       System.err.println("Erreur dans le sleep : "+ie);
       ie.printStackTrace();
       System.exit(1); // pas obligatoire !
    }
    Enfin une petite révision des bases du langage ( notamment les exceptions ) me parait plus que nécessaire

  8. #8
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 19
    Par défaut
    merci pour le catch


    par contre autre pb

    je dois mettre mon thread dans un paintcompoment pour pouvoir afficher l'image ??

    ou je dois faire un repaint() ?

    merci

    PS : les bases j'essaye de les apprendre donc je ne peux pas encore les reviser

  9. #9
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Quelque part dans le constructeur ou alors dans une methodes specifique appellees a la creation de ton objet ou des que tu seras sur qu'il sera affiche, tu fais qq chose du genre :

    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
    private Thread t;
     
    [...]
     
    /** Starts refresh thread (if not already running).
    */
    public synchronized void start() {
      if (t == null) {
        t = new Thread(new Runnable() {
          /** @inheritDoc
         */
          public void run() {
            try {
              while (true) {
                if (isVisible() && isShowing()) {
                  repaint();
                }
                sleep(...);
              }
            }
            catch (InterruptedException ie) { 
              [...]
            }
          }
        });
        t.setPriority(Thread.MIN_PRIORITY);
        t.start();
      }
    }
     
    /** Stops refresh thread (if already running).
    */
    public void synchronized stop() {
      if (t != null) {
        t.interrupt();
        t = null;
      }
    }
    Je te conseilles cependant l'usage d'un Timer Swing, c'est peut-etre mieux adapte a ton probleme. Non-obstant quelque soit la solution vers laquelle tu t'orientes n'oublies pas de faire ce qu'il faut pour couper ta thread/ton timer quand tu n'en a plus besoin (interrupt()/cancel()).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

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

Discussions similaires

  1. comment afficher une image animée dans un formulaire
    Par dadamovic dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/05/2006, 18h59
  2. Réponses: 1
    Dernier message: 07/02/2006, 19h22
  3. Comment mettre une image en arriere plan
    Par huon dans le forum Access
    Réponses: 1
    Dernier message: 13/09/2005, 16h16
  4. [JBouton] Comment mettre une image sur un bouton ?
    Par Kyti dans le forum Composants
    Réponses: 6
    Dernier message: 11/03/2005, 16h08
  5. Comment mettre une image en fond de JFrame
    Par marc26 dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2004, 17h57

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