1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : septembre 2008
    Messages : 58
    Points : 46
    Points
    46

    Par défaut Problème de déplacement d'une image et affichage multiple de l'image en java dans une fenetre JPanel

    Bonjour;
    Je cherche à déplacer une image dans une fenêtre JPanel, j'arrive a déplacer l'image de haut en bas mais mon premier souci et que j'ai 5 images qui s'affiche en même temps, j'aimerais contrôler le nombre d'affichage par exemple si je veux 2,3 ou 4 c'est à ça qui s'affiche, j'aimerais aussi contrôler la direction par exemple le déplacer sur la ligne du diagonal, sur une ligne de 45 degré avec l'horizontale en montant ou en descendant ainsi que la déplacer en horizontal lorsque par exemple x=12 mais pour le moment je suis bloqué sur le nombre d'affichage et la direction. Voici ce que j'ai réussis à faire.
    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
    package Animation;
     
    public class Animation {
      public static void main(String[] args) {
     
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(new BackgroundPane());
            frame.pack();
            frame.setVisible(true);
          }
    }
     
    class BackgroundPane extends JPanel {
      private BufferedImage bg;
      private int yOffset = 0;
      private int yDelta = 1;
     
      public BackgroundPane() {
        try {
          bg = ImageIO.read(new File("src/images.png"));
        } catch (Exception ex) {
          ex.printStackTrace();
        }
     
        Timer timer = new Timer(10, new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
            yOffset += yDelta;
            if (yOffset > getHeight()) {
              yOffset = 0;
            }
           repaint();
          }
        });
        timer.start();
      }
     
      @Override
      public Dimension getPreferredSize() {
        return new Dimension(300,300);
      }
     
      @Override
      protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g.create();
     
        int xPos = (getWidth() - bg.getWidth()) / 2;
        int yPos = yOffset;
     
        yPos = yOffset;
        while (yPos < getHeight()) {
          g2d.drawImage(bg, xPos, yPos, this);
          yPos += bg.getHeight();
     
        }
     
        g2d.dispose();
      }
    }
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    11 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : septembre 2009
    Messages : 11 148
    Points : 26 581
    Points
    26 581
    Billets dans le blog
    2

    Par défaut

    Salut,


    1. Cela ne sert à rien de faire des boucles qui font varier l'affichage dans les méthodes du type paintComponent parce que le seul résultat que tu pourra voir c'et le résultat final. Donc la boucle while (yPos < getHeight()) { tu peux la supprimer et ne gérer que l'état final.
    2. Pour faire un déplacement horizontal, tu fait varier yPos, l'ordonnée. Pour faire un déplacement horizontal, c'est pareil, mais avec l'abscisse. Et pour un déplacement en diagonal, et bien, c'est pareil mais en déplaçant en même temps sur les deux axes.
    3. Pour gérer plusieurs images, il suffit au lieu de ne gérer qu'une image, en gérer plusieurs. Dans ton code, tu gères ton image avec une variable, bg. Plusieurs images, donc plusieurs variables, ou, mieux, pour gérer ça plus facilement, sans dupliquer le code, utiliser un tableau. Pour chaque image, tu as besoin d'une image, d'un couple (x,y), et d'un couple (xdelta,ydelta). Le plus simple serait de gérer ça par une classe qui a ces attributs, une méthode move() (par exemple, avec éventuellement en argument le rectangle correspondant à la zone de déplacement pour gérer la sortie de l'image) qui serait appelée par le timer, et une méthode draw(Graphics2D) qui serait appelée par paintComponent.
    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.

Discussions similaires

  1. problème d'utilisation d'image en PHP dans une bdd.
    Par BenGonGon dans le forum PHP & SGBD
    Réponses: 1
    Dernier message: 21/09/2011, 13h17
  2. [CSS 2] Problème d'affichage d'image en hover dans une liste
    Par dev45 dans le forum Mise en page CSS
    Réponses: 24
    Dernier message: 11/04/2011, 17h46
  3. Problème d'affichage d'une image dans une fenetre
    Par taouja dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/04/2007, 16h00
  4. Réponses: 4
    Dernier message: 03/05/2005, 09h03

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