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 :

Problème de rafraichissement des images dessinées dans un JPanel


Sujet :

2D Java

  1. #1
    Membre régulier Avatar de maya
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 140
    Points : 90
    Points
    90
    Par défaut Problème de rafraichissement des images dessinées dans un JPanel
    Bonjour à toutes et à tous ,

    Je souhaite dessiner dans un JPanel ; j'arrive à le faire avec la méthode PaintComponent mais mon problème c'est dès que je minimise / maximise ou je déplace ma fenêtre , seul le dernier dessin qui s'affiche je précise que je fais appel à la méthode updateUI();

    voici mon code
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    import java.awt.Graphics;
    import java.awt.GridBagLayout;
    import java.awt.Image;
    import java.awt.image.ImageObserver;
    import java.util.ArrayList;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    public class test2 extends JPanel {
     
    	public Image im=null;
    	public static int x=0,y=0;
    	private static final long serialVersionUID = 1L;
     
    	/**
             * This is the default constructor
             */
    	public test2() {
    		super();
    		initialize();
    	}
     
     
    	 public  void paintComponent(Graphics g) {
    	        super.paintComponent(g);
    			g.drawImage(im, x-64, y-64,this);
     
    	    }
     
     
     
    	/**
             * This method initializes this
             * 
             * @return void
             */
    	private void initialize() {
    		this.setSize(300, 200);
    		this.setLayout(new GridBagLayout());
     
    		this.addMouseListener(new java.awt.event.MouseAdapter() {
    			public void mouseReleased(java.awt.event.MouseEvent e) {
     
    				x=e.getX();
    				y=e.getY();
     
     
    				ImageIcon monImage = new ImageIcon(getClass().getResource("/imgfinal/1.gif"));
                    im=monImage.getImage();
                    paintComponent(getGraphics());
                    updateUI();
     
     
     
     
    			}
    		});
    	}
     
     
     
     
     
     
     
     
    }
    Si quelqu'un saura m'aider je lui serais vraiment reconnaissante



    Merci

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    1. Au lieu passer par paintComponent et updateUI, tu ferais mieux de faire un simple appel à la méthode repaint
    2. Il est normal que ce ne soit que le dernier dessin qui soit affiché, en effet le paintComponent redessine tout le composant (ou potentiellement une seul partie si le clip est spécifié, mais il ne faut pas compter dessus).


    Ce qu'il faut c'est que tu stocke les points où il y a eu un mouseReleased dans une collection quelconque et que dans le paintComponent tu parcoures cette collection pour dessiner ton image à chaque point.

  3. #3
    Membre régulier Avatar de maya
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 140
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par sinok Voir le message
    1. Au lieu passer par paintComponent et updateUI, tu ferais mieux de faire un simple appel à la méthode repaint
    2. Il est normal que ce ne soit que le dernier dessin qui soit affiché, en effet le paintComponent redessine tout le composant (ou potentiellement une seul partie si le clip est spécifié, mais il ne faut pas compter dessus).


    Ce qu'il faut c'est que tu stocke les points où il y a eu un mouseReleased dans une collection quelconque et que dans le paintComponent tu parcoures cette collection pour dessiner ton image à chaque point.
    Merci Sinok , j'ai modifié la méthode paintComponent en ajoutant une liste , et ça marche

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

Discussions similaires

  1. [SDL 1.2] Dessiner des images SDL dans des processus fork()
    Par DiR95 dans le forum SDL
    Réponses: 5
    Dernier message: 27/03/2015, 11h33
  2. Problème d'ajout des images dans un panel
    Par joumana dans le forum AWT/Swing
    Réponses: 17
    Dernier message: 21/06/2010, 13h34
  3. Réponses: 2
    Dernier message: 18/03/2009, 10h47
  4. Centrer des images verticalement dans un div?
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 18/10/2005, 21h04
  5. [DBase][BDE]Insérer des images JPeg dans un table.u
    Par migauvin dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/08/2004, 12h03

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