Comment utiliser repaint() avec paintComponents [Résolu]

Messages postés
9
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
4 avril 2006
- - Dernière réponse : meknour
Messages postés
10
Date d'inscription
mercredi 11 mai 2011
Statut
Membre
Dernière intervention
25 décembre 2011
- 11 mai 2011 à 15:29
Bonjour

Petit problème en java vu que je découvre le graphisme.

Voila tout est dit dans la question ^^.Vu que j'utilise swing, me suis
dit qu'il valait mieux utiliser paintComponents mais bon le problème
c'est que j'aimera rafraichir ce qu'il y a dedans donc en utilisant
repaint() mais ca a pas l'air de marché.



J'ai une jframe dans laquelle j'ai collé un jpanel .Dans ce Jpanel je dessine une ligne .

Puis en fait mon application fait que quand je bouge la souris la ligne
s'aggrandit ou retrécit, d'ou la necessité d'utiliser repaint.



Merci pour la futur aide apportée ^^
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
54
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 avril 2006
1
3
Merci
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Dessin extends JPanel implements MouseListener {
Vector v = null;

Point p = null;

public Dessin() {
super();
v = new Vector();
p = new Point();

p.x = 0;
p.y = 0;

v.add(new Point(p));

this.addMouseListener(this);
}

public void mouseClicked(MouseEvent e) {
p.x = e.getX();
p.y = e.getY();
v.add(new Point(p));
repaint();
}

protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
int x1, x2, y1, y2;
for (int i = 1; i < v.size(); i++) {
x1 = ((Point) v.elementAt((i - 1))).x;
y1 = ((Point) v.elementAt((i - 1))).y;
x2 = ((Point) v.elementAt(i)).x;
y2 = ((Point) v.elementAt(i)).y;
g.drawLine(x1, y1, x2, y2);
}
}

public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}

public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}

public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public static void main(String[] args) {
Dessin dessin = new Dessin();
JFrame jf = new JFrame();

jf.setSize(640, 480);

jf.getContentPane().setLayout(new BorderLayout());
jf.getContentPane().add(dessin, BorderLayout.CENTER);

jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 116 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_nomad56
Messages postés
86
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
3 septembre 2008
3
0
Merci
si je comprend bien, tu as surcharger la methode paint du JPanel pour
dessiner un ligne dedans, et tu veux que a chaque mouvement de souris
ta ligne s'update ?

Si c'est bien ca,dans ton listener d'event souris tu fait un monPanel.revalidate(); a la fin et ca devrait fonctionner
Commenter la réponse de cs_mep
Messages postés
9
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
4 avril 2006
0
Merci
Ouias c'est ca sauf que c'est la methode paintComponents que j'ai
surchargé sinon j'ai rajouté ligne.revalidate(); et ca donne rien .
(ligne etant le nom de mon Panel)
Commenter la réponse de cs_grelon
Messages postés
54
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 avril 2006
1
0
Merci
Bon, c'est pas exactement ce que tu cherche mais regarde le code suivant , ca te donnera surement des idées .
Dans celui-ci, à chaque clic de la souris, une ligne est tracée . on peut ainsi dessiner toute sorte de polygones...

(code dans le message suivant)
Commenter la réponse de cs_nomad56
Messages postés
9
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
4 avril 2006
0
Merci
Merci en fait c'est que je mettais paintComponents au lieu de paintComponent. ^^

Sinon je vais me servir du code que tu ma donné pour améliorer ce que j'ai fais .



merci encore ^^
Commenter la réponse de cs_grelon
Messages postés
54
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 avril 2006
1
0
Merci
de rien grelon, c toujours un plaisir :)
Commenter la réponse de cs_nomad56
Messages postés
10
Date d'inscription
mercredi 11 mai 2011
Statut
Membre
Dernière intervention
25 décembre 2011
0
Merci
اريد رسم graphe qui soit affiche dans l'ecran automatiquement dans l'interface lors l'execution
Commenter la réponse de meknour