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

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

Répondre au sujet
cs_nomad56 54 Messages postés samedi 16 avril 2005Date d'inscription 13 avril 2006 Dernière intervention - 1 avril 2006 à 02:07
+3
Utile
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);
}
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_nomad56
cs_mep 86 Messages postés vendredi 7 mai 2004Date d'inscription 3 septembre 2008 Dernière intervention - 31 mars 2006 à 18:00
0
Utile
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
cs_grelon 9 Messages postés vendredi 20 février 2004Date d'inscription 4 avril 2006 Dernière intervention - 31 mars 2006 à 19:42
0
Utile
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
cs_nomad56 54 Messages postés samedi 16 avril 2005Date d'inscription 13 avril 2006 Dernière intervention - 1 avril 2006 à 02:06
0
Utile
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
cs_grelon 9 Messages postés vendredi 20 février 2004Date d'inscription 4 avril 2006 Dernière intervention - 1 avril 2006 à 14:35
0
Utile
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
cs_nomad56 54 Messages postés samedi 16 avril 2005Date d'inscription 13 avril 2006 Dernière intervention - 1 avril 2006 à 15:55
0
Utile
de rien grelon, c toujours un plaisir :)
Commenter la réponse de cs_nomad56
meknour 10 Messages postés mercredi 11 mai 2011Date d'inscription 25 décembre 2011 Dernière intervention - 11 mai 2011 à 15:29
0
Utile
اريد رسم 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.