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

Agents de placement/Fenêtres Java Discussion :

repaint() n'efface pas


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Avril 2014
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 498
    Points : 1 178
    Points
    1 178
    Par défaut repaint() n'efface pas
    bonjour voila j'ai un JFrame auquel j'attache un JPanel. Le but est de pouvoir dessiner un point qui suit le pointeur de la souris lorsque celle ci est enfoncée et en mouvement.

    Le petit problème c'est que mon repaint() n'efface pas les points précédents et je me retrouve avec tout plein de points sur ma fenêtre.

    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
    72
    73
    74
    75
    76
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.SystemColor;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
     
    public class Init{
     
    	public static void main(String args[]) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException{
     
    		Fenetre fen = new Fenetre();	
    	}
    }
     
    class Fenetre extends JFrame{
     
    	private Panneau pan;
     
    	public Fenetre(){
     
    		setSize(300,300);
    		setTitle("test");
    		pan = new Panneau();
    		getContentPane().add(pan);
    		setVisible(true);
    	}
    	}		
     
     
     
    class Panneau extends JPanel implements MouseMotionListener{
     
    	private int bufferX=150,bufferY=150;
     
    	public Panneau(){
     
    		this.addMouseMotionListener(this);
    	}
     
     
    	public void paintComponent(Graphics g){
    		super.paintComponents(g);                  //normalement ici, cet appel devrait effacé le précédent dessin mais il ne le fait pas
     
    		g.setColor(Color.BLACK);
    		g.fillOval(bufferX, bufferY, 5, 5);
    		}
     
    	@Override
    	public void mouseDragged(MouseEvent arg0) {
    		System.out.println("x : "+arg0.getX() + " et y : " + arg0.getY());
    		bufferX=arg0.getX();
    		bufferY=arg0.getY();
    		repaint();
     
    	}
     
    	@Override
    	public void mouseMoved(MouseEvent arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    }
    On dirait que mon repaint() ne fais que dessiner par dessus ce qui à déjà été dessiné...Or j'aimerais que les précédents points soient effacés afin de ne dessiné qu'un seul point noir au niveau du pointeur de la souris...

    Merci encore de votre aide.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il y a une juste une petite erreur (faute de frappe, ou de complétion ?) dans la redéfinition de la méthode paintComponent(Graphics) : tu ne rappelles pas la méthode redéfinie paintComponent(Graphics), qui effectue le redessin du fond du JPanel, main paintComponents(Graphics), avec un s à la fin, qui, elle, a pour but de dessiner les composants qu'on ajoute au JPanel, le cas échéant.
    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.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Avril 2014
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 498
    Points : 1 178
    Points
    1 178
    Par défaut
    Merci beaucoup je suis vraiment un boulet

    Bizarre que le compilateur n'ai pas reconnu que cette fonction n'existe pas.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par tabouret Voir le message
    Bizarre que le compilateur n'ai pas reconnu que cette fonction n'existe pas.
    Cette méthode (et pas fonction) existe (dans la classe JPanel, elle est héritée de java.awt.Container), donc pour le compilateur, il n'y a rien d'anormal.
    On pourrait avoir une annotation (ou autre) pour faire vérifier au compilateur qu'on invoque sur super uniquement la méthode redéfinie, un sorte de @Override étendu, mais on n'a pas, à ma connaissance.
    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.

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

Discussions similaires

  1. TRIM n'efface pas l'espace sur un bloc basé
    Par jeunot0108 dans le forum Forms
    Réponses: 7
    Dernier message: 20/12/2007, 11h27
  2. La commande delete dir n'efface pas ce que je veux
    Par DJ Caësar 9114 dans le forum ANT
    Réponses: 2
    Dernier message: 04/10/2007, 12h10
  3. repaint qui marche pas
    Par burhud dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 12/11/2006, 18h11
  4. Fichiers qui ne s'effacent pas
    Par Blo0d4x3 dans le forum Administration système
    Réponses: 8
    Dernier message: 21/03/2006, 13h32
  5. image dans une iframe div qui ne s'efface pas
    Par Invité(e) dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 26/10/2005, 11h19

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