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

Messages postés
9
Date d'inscription
vendredi 20 février 2004
Dernière intervention
4 avril 2006
- 31 mars 2006 à 16:17 - Dernière réponse :
Messages postés
10
Date d'inscription
mercredi 11 mai 2011
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 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
54
Date d'inscription
samedi 16 avril 2005
Dernière intervention
13 avril 2006
- 1 avril 2006 à 02:07
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);
}
}

Merci cs_nomad56 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_nomad56
Messages postés
86
Date d'inscription
vendredi 7 mai 2004
Dernière intervention
3 septembre 2008
- 31 mars 2006 à 18:00
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
Dernière intervention
4 avril 2006
- 31 mars 2006 à 19:42
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
Dernière intervention
13 avril 2006
- 1 avril 2006 à 02:06
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
Dernière intervention
4 avril 2006
- 1 avril 2006 à 14:35
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
Dernière intervention
13 avril 2006
- 1 avril 2006 à 15:55
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
Dernière intervention
25 décembre 2011
- 11 mai 2011 à 15:29
0
Merci
اريد رسم graphe qui soit affiche dans l'ecran automatiquement dans l'interface lors l'execution
Commenter la réponse de meknour

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.