joudabenhaouia
Messages postés8Date d'inscriptionlundi 15 mars 2010StatutMembreDernière intervention12 mai 2011
-
10 mai 2011 à 14:16
dabidabi
Messages postés21Date d'inscriptionmardi 3 mai 2011StatutMembreDerniè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 :)
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)
joudabenhaouia
Messages postés8Date d'inscriptionlundi 15 mars 2010StatutMembreDernière intervention12 mai 2011 10 mai 2011 à 22:02
Si j'avais bien compris, à ce stade je vais dessiner une ovale pour un seul objet qui prend pour chaque enregistrement le X et le Y et pourra se déplacer d'une coordonnée à une autre mais avec ce code j'obtient autant d'ovales que d'enregistrements existants dans ma table... apres on doit distinguer le parcours de chaque objet par son nom .
Voila mon code apres quelques modifications:
public static void main(String[] args) {
Vector <Objet>vectorcercle = new Vector();
Vector <Objet>vectorcarre = new Vector();
vectorcercle=Object_Manager.getAllObjectsCercle();
vectorcarre =Object_Manager.getAllObjectsCarre();
//ce parcours des 2 vecteurs si je la mets me génère cette erreur:
//Exception in thread "main" java.lang.IllegalThreadStateException
// at java.lang.Thread.start(Thread.java:595)
// at video.Simulation.main(Simulation.java:85)
for (int i=0; i<vectorcercle.size();i++){
(vectorcercle.get(i)).start();}
for (int j=0; j<vectorcarre.size();j++){
(vectorcercle.get(j)).start();}
JFrame frame = new JFrame ();
Simulation a = new Simulation (vectorcercle,vectorcarre);
Thread cercle= new Thread ( a);
frame.setSize(200,200);
frame.add(a);
cercle.start();
frame.setVisible(true);
}}
P.S: ce code ne donne que les rectangles fixes meme si ma table ne contient que des cerlces
Je serais reconnaissante si vous m'aiderez ...merci
Pour éviter d'avoir autant de figure que de tours de boucle, tu peux créer un JComponent par objets dans ta base et, dans ton thread, changer leur x et leur y. Tu ferais un repaint() et ce sera gagné.
Voilà quelques bouts de code :
public class OvalDessin extends JComponent {
// ATTRIBUTS
private int x, y;
private Color couleur;
// CONSTRUCTEUR
/**
* Constructeur
* */
public TasMedoc( int x , int y , int cote , Color couleure ){
super();
this.x = x;
this.y = y;
this.couleur = couleur;
setSize( 2 * cote , 2 * cote );
setLocation( x , y );
}
// METHODE
/**
* Méthode redéfinie de la super-classe JComponent.
* */
public void paintComponent( Graphics g ) {
super.paintComponent(g);
g.setColor( couleur );
// appelle ta méthode pour dessiner ton oval
}
}
Ensuite dans ton thread, tu n'as qu'à changer les x et y puis appeler la méthode repaint(). J'appellerais la méthode du panel qui contiendrait mes objets mobiles (et le thread).
--
Pylouq (actuellement jongleur de clavier AZERTY et de clavier QWERTZ)
joudabenhaouia
Messages postés8Date d'inscriptionlundi 15 mars 2010StatutMembreDernière intervention12 mai 2011 11 mai 2011 à 19:17
Slt! j'ai ajouté quelques modifications, il y a eu du progrès mais avec un mal d'affichage dans le resulatat du graphics (s'affichent légèrement)avec une erreur de localisation de la base de données mais cette erreur ne s'affiche pas avant pourtant je me connecte pas mal de fois sur la base, voila le code:
//Classe Objet:
package video;
import java.sql.*;
public class Objet extends Thread{
int code;
int time;
int x;
int y;
String nom;
Objet ( int code,int time,int x,int y,String nom){
public class Simulation extends JPanel implements Runnable {
Vector <Objet>vectorcercle= new Vector();
Vector <Objet>vectorcarre=new Vector();
public Simulation(Vector <Objet>vectorcercle,Vector<Objet> vectorcarre){
this.vectorcercle=vectorcercle;
this.vectorcarre=vectorcarre;
}
public void paintComponent(Graphics g){
String cercle ="cercle";
super.paintComponent(g);
for (int i =0; i < vectorcercle.size();i++)
{
if (((vectorcercle.get(i)).nom).equals(cercle)){
g.setColor(Color.RED);
g.fillOval((vectorcercle.get(i)).x,(vectorcercle.get(i)).y,10,10);
g.drawOval((vectorcercle.get(i)).x,(vectorcercle.get(i)).y,10,10);
}}
String carre ="carre";
for (int j =0; j < vectorcarre.size();j++)
{
if (((vectorcarre.get(j)).nom).equals(carre)){
joudabenhaouia
Messages postés8Date d'inscriptionlundi 15 mars 2010StatutMembreDernière intervention12 mai 2011 11 mai 2011 à 19:22
Désolée j'ai pas vu ta réponse, je vais l'essayer et voir est ce ça résout le problème et si vous avez qq remarques à propos mon nouveau code SVP posez les ... Merci
joudabenhaouia
Messages postés8Date d'inscriptionlundi 15 mars 2010StatutMembreDernière intervention12 mai 2011 12 mai 2011 à 02:06
ça marche maintenant avec ce code:
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.Vector;
import javax.swing.JFrame;
public class Simulation extends JPanel implements Runnable {
int x1;
int y1;
int x2;
int y2;
Vector <Objet>vectorobjet= new Vector();
public Simulation(Vector <Objet>vectorcercle){
this.vectorobjet=vectorcercle;
}
public void paintComponent(Graphics g){
joudabenhaouia
Messages postés8Date d'inscriptionlundi 15 mars 2010StatutMembreDernière intervention12 mai 2011 12 mai 2011 à 19:34
de la premiere coordonnée extraite de la base vers la derniere, le but exactement est qu'on suppose que l'objet trace une droite virtuelle entre les points(on veut pas que les objets(threads) clignotent entre les points)
joudabenhaouia
Messages postés8Date d'inscriptionlundi 15 mars 2010StatutMembreDernière intervention12 mai 2011 12 mai 2011 à 19:39
l'idée est qu'on developpe une fontion qui calcule la pente des points et que dans la boucle for l'utilise à chaque fois mais j'ai pas trouvé comment exactement
dabidabi
Messages postés21Date d'inscriptionmardi 3 mai 2011StatutMembreDernière intervention 2 août 2011 17 mai 2011 à 00:08
je veux représenter plusieurs objets dans une meme applet et faire les déplacement de ces objets...j sai pa comment procéder, pourriez vous m'aidez svp...merci bien