Graphics et Thread

joudabenhaouia Messages postés 8 Date d'inscription lundi 15 mars 2010 Statut Membre Dernière intervention 12 mai 2011 - 10 mai 2011 à 14:16
dabidabi Messages postés 21 Date d'inscription mardi 3 mai 2011 Statut Membre Dernière intervention 2 août 2011 - 17 mai 2011 à 00:08
le but de ce code est de récupérer les valeurs ajoutées dans la base de données(coordonnées X et Y )et de dessiner les objets à l'aide de ces coordonnées grace aux threads c'est à dire si dans le premier enregistrement X=50 et Y=100 et pour le deuxieme enregistrement X=100 et Y=200, on doit avoir un thread qui bouge du point premier vers le deuxieme mais avec ce code on obtient 2 objets à part.
Quelqu'un qui peut m'aider SVP pour résoudre ce probleme, merci :)



package video;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Enumeration;
import java.util.Vector;
import javax.swing.JFrame;

public class Simulation extends JPanel implements Runnable {
Vector <Objet>vector;
public Simulation(Vector <Objet>vector){
this.vector=vector;


}
public void paintComponent(Graphics g){
super.paintComponent(g);
for (int i =0; i < vector.size();i++)
{

g.setColor(Color.RED);
g.fillOval((vector.get(i)).x,(vector.get(i)).y,10,10);
g.drawOval((vector.get(i)).x,(vector.get(i)).y,10,10);
}
}

while (true){
this.repaint();
try{
Thread.currentThread().sleep(10);
}catch(InterruptedException e){System.out.println("erreur");}
}}


public static void main(String[] args) {
Vector <Objet>vector = new Vector();
try{
Connect.getConnection();
ResultSet rs = Connect.getData ("select * from objet ");
while (rs.next()){
vector.add(new Objet ( rs.getInt(1),rs.getInt(2),rs.getInt (3),rs.getInt(4), rs.getString(5)));

for (int i=0;i<vector.size();i++){
(vector.elementAt(i)).start();
}
}}catch(Exception ex){System.out.println("erreur");}

JFrame frame = new JFrame ();
Simulation a = new Simulation (vector);
Thread cercle= new Thread ( a);
frame.setSize(200,200);
frame.add(a);
cercle.start();
frame.setVisible(true);




}}
A voir également:

10 réponses

Utilisateur anonyme
10 mai 2011 à 19:12
Je me demande si l'origine du problème ne vient pas de ta boucle for.
Dans ton exemple, tu as des coordonnées seulement pour deux objets différents ? Car dans ton for, si tu boucles autant de fois qu'il y a d'objet, tu auras toujours deux objets dessinés. Dis le si je ne suis pas clair.

Au passage, vu que tu fais un fillOval, tu n'as pas besoin de faire derrière un drawOval. Le fillOval te fais un oval plein et le drawOval te dessines juste la bordure.

--
Pylouq (actuellement jongleur de clavier AZERTY et de clavier QWERTZ)
0