Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme Thread et repaint [ Divers / Général ] (Karibou95)

mardi 7 octobre 2008 à 21:30:13 | Probleme Thread et repaint

Karibou95

Bonjour,

J'ai plusieurs questions :

Tout d'abord j'ai crée un canvas dans lequel je voudrais faire bouger un point , le probleme c'est que avec repaint(); le point se déplace mais ne s'efface pas au fur et à mesure :( donc au bout d'un moment on voit plus qu'une droite et pas un rond qui se déplace. ^^

De plus j'ai mis la couleur de fond de mon canvas en noir et quand je fais un thread, temps que le thread  ne c'est pas terminé au moins une fois le fond de mon canvas et blanc o_o et redevient noir ensuite !? je ne comprend pas d'ou cela provient .

Voici en gros ma méthode paint :

public void paint (Graphics g)
{
for(int j=25;j<470;j++) // ici le for permet de crée des ronds jusqua l'endroit souhaité
   {
                      
                     g.fillOval(j,j,10,10);
                     Thread.sleep(50);
                     setForeground(Color.BLACK);

                   }
    repaint();
                }

mercredi 8 octobre 2008 à 09:12:51 | Re : Probleme Thread et repaint

laurent1024

Réponse acceptée !
Quelque remarques :
1. Pour mettre une couleur de fond c'est setBackground et non setForeground.
2. Pour que la couleur de fond soit mise le plus rapidement possible il faut que tu met le setBackground en début de fonction.
3. il ne faut pas mettre de repaint dans la fonction paint.

Pour ce que tu veux faire il faut procéder de la manieres suivante.

public void paint (Graphics g) {
   setBackground(Color.Black);
    g.fillOval(j,j,10,10);
}

protected int j=25;

public void incJ() {
    if (j < 470)
       j++;
}

et faire un thread qui a une méthode run avec
sleep(50);
lePanel.incJ();
lePanel.repaint();

mercredi 8 octobre 2008 à 10:18:25 | Re : Probleme Thread et repaint

sheorogath

Membre Club Administrateur CodeS-SourceS
Puis heu si tu es en swing c'est paintComponent qu'il faut surcharge

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"

mercredi 8 octobre 2008 à 12:47:48 | Re : Probleme Thread et repaint

Karibou95

merci pour vos réponses néanmoins il me reste une petite erreur :(

quand je crée ma class PaintThread qui etends Thread avec mon run , il ne reconnais pas mon panel car il se trouve dans une autre class, comment faire pour le récuperer alors que je ne peut pas etends paintthread car il y'a deja extends?

dsl si la question est bete mais je commence juste :)

mercredi 8 octobre 2008 à 13:25:55 | Re : Probleme Thread et repaint

Twinuts

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

utilise un setter...

exemple :

public class PaintThread extends Thread {
  ...
  private JPanel monPanel = null;
  ...

  public void setMonPanel(JPanel monPanel) {
    this.monPanel = monPanel;
  }
  ...
}

et dans la classe qui contient le panel tu fais
PaintThread pt = ...
JPanel monPanel = ...
...
pt.setMonPanel(monPanel);
...



------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO

mercredi 8 octobre 2008 à 15:58:31 | Re : Probleme Thread et repaint

Karibou95

Merci ça ma beaucoup aidé ta reponse :)

j'arrive a appeller mon Canvas

mais pas de chance j'ai encore une erreur dans le thread, quand je compile le TRy de mon thread ne se lance pas j'ai juste le catch o_o

voici mon thread :

class PaintThread extends Thread{
  
  private Canvas_Repere Dessiner_Repere = null;
  
  public void setMonCanvas(Canvas_Repere Dessiner_Repere) {
    this.Dessiner_Repere = Dessiner_Repere;
  }
  
  
  public void run() {

try{
Dessiner_Repere.incJ();
Dessiner_Repere.repaint();
sleep(500);
System.out.println("TRY");
     }

catch (Exception e) {

System.err.print("");
System.err.print("MARCHE PO LE THREAD O_o");
System.err.print("");
}
    }
  }

au dessus de mon thread dans ma class Canvas_Repere j'ai la méthode incJ, j'ai mon fillOval au debut de ma méthode paint et protected j = 25; au début de ma class Canvas_Repere.

quand j'essais de mettre :

Dessiner_Repere.incJ();
Dessiner_Repere.repaint();

en commentaire j'arrive à lire le TRy sinon ça marche po :(
peut etre mon erreur vient elle du fait que j'appelle un canvas et non un panel?
dans ce cas il faut peut etre que je crée un panel dans lequel je mettrais mon canvas ?

mercredi 8 octobre 2008 à 16:09:29 | Re : Probleme Thread et repaint

laurent1024

Essaye un e.printStackTrace(); à la place du System.err.print("MARCHE PO LE THREAD O_o");
Tu aura deja plus d'info à nous donner.


mercredi 8 octobre 2008 à 16:19:48 | Re : Probleme Thread et repaint

Karibou95

^^ j'ai testé e.printStackTrace(); il me dit :


java.lang.NullpointerException at PaintThread.run(IHM.java :723)

la ligne 723 correspond à ça :

Dessiner_Repere.incJ();

juste en dessus de mon try{

ouin :(

mercredi 8 octobre 2008 à 16:25:29 | Re : Probleme Thread et repaint

laurent1024

Réponse acceptée !
Tu n'aurais pas oublié de faire le setMonCanvas ?


mercredi 8 octobre 2008 à 17:00:59 | Re : Probleme Thread et repaint

Karibou95

non j'ai bien mis le setMonCanvas mais j'avais fait une erreur de frappe dans mon try arf :(


par contre maintenant il ne parcours plus du tout mon thread o_o aucun message ne s'affiche !?

mon fichier IHM et de la sorte :

une class Canvas_Repere

en dessous une class Painthread et en dessous ma class interface_Graphique avec :
PaintThread pt = ...
JPanel monPanel = ...
...
pt.setMonPanel(monPanel);
...


bizarre



Cette discussion est classé dans : probleme, crée, thread, repaint, canvas


Répondre à ce message

Sujets en rapport avec ce message

probleme de thread et de repaint lors de traitement [ par toonytoun ] Bonjour, je suis en licence informatique et il m'est demandé de créer un jeu de plateau et j'essaye depuis des jours de mettre en place une pause dans Probleme de paint et repaint [ par tigroux ] Salut,Voila je veux dessinez un graphe qui se dessine qu'une seul fois au démarrage. Mais le probleme c'est que si je ne fais pas la repaint à la fin, PB multithreading [ par fab2308 ] Bonjour,j'ai un petit probleme de thread dans mon application multithreadé.J'ai plusieurs threads qui tourne en permanance : un thread en ecoute du re Threads [ par CHABRY ] Bonjour,je suis en train de développer une application JMS multithrédée ou je crée dans une classe Consommateur.java 10 threads auquels je passe une c probleme d'affichage [ par leBigouden ] bonjoursj'ai cree une barre de menu qui marche parfaitement sur une Jframemais lorsque j'ajoute a ma jFrame mon canvas avec mon graphe et que j'essaye Evenement et Thread ??? [ par themadmax ] Bonjour,Je devellope un petit jeu en reseau sous Java et apres quelque jour de programmation il me viens un probleme.J'utilise les Thread et les socke Canvas Probleme [ par CHKDSK2K ] Bonjour, J'ai crée un canvas quand j'appuye sur un bouton il dessine un cercle, quand on entre une autre valleur on re clique sur le même bouton, il Probleme de repaint [ par homer__rules ] Bonjour tout le monde ! J'ai un petit probleme de repaint Mon appli (JFrame) se decompose en 3 parties : le tout est geré par un BorderLayout J'ai probleme thread [ par mouhoub ] Bonsoir, j'ai construit deux interfaces graphiques A,B A est pour l'identification (login+password) et quand je clique sur un bouton ok je lance ma Probleme avec getWidth() (Canvas ou Panel) [ par SLaYerS ] Voila, j'me suis fait une classe qui derive de la classe Canvas Dans mon constructeur j'apelle une méthode createScreen qui est censé me tracé une lig


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.