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

Signaler
Messages postés
9
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
4 avril 2006
-
Messages postés
10
Date d'inscription
mercredi 11 mai 2011
Statut
Membre
Dernière intervention
25 décembre 2011
-
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 ^^

7 réponses

Messages postés
54
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 avril 2006
1
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);
}
}
Messages postés
86
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
3 septembre 2008
3
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
Messages postés
9
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
4 avril 2006

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)
Messages postés
54
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 avril 2006
1
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)
Messages postés
9
Date d'inscription
vendredi 20 février 2004
Statut
Membre
Dernière intervention
4 avril 2006

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 ^^
Messages postés
54
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 avril 2006
1
de rien grelon, c toujours un plaisir :)
Messages postés
10
Date d'inscription
mercredi 11 mai 2011
Statut
Membre
Dernière intervention
25 décembre 2011

اريد رسم graphe qui soit affiche dans l'ecran automatiquement dans l'interface lors l'execution