Probleme avec le changement de couleur

sparetime Messages postés 34 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 17 août 2004 - 26 mai 2004 à 14:14
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007 - 26 mai 2004 à 15:53
bonjour
j'ai une classe qui fait du graphique et dans laquelle je modifie la couleur selon l'etat d'une variable qui se trouve dans une deuxieme classe et sur laquelle je fais certains traitements.
Le probleme est que je ne vois que la derniere couleur modifiée et non les couleurs intermediaires et pourtant cela marche des fois??
j'ai essaye de mettre la fonction qui change la couleur dans un thread auquel je fais appel qd l'état de ma variable change dans la classe principale mais j'ai toujours le même pb ca ne marche pas à tous les coups et je ne comprends pas pourquoi
donc au secours
quelqu'un sait 'il où est le pb
merci d'avance

5 réponses

dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
26 mai 2004 à 14:34
euh, c'est confus ton truc...
comment tu lie ta variable a ta couleur?
c'est ce lien que tu dois analyser...
envoie cette partie de code, on verra ce qu'on peut faire
---------------------------------------------
>:) dams >:)
...en dansant la javanaise ...
---------------------------------------------
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 mai 2004 à 14:35
essaye de faire un repaint() de tes composants concerné dans ton thread
0
sparetime Messages postés 34 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 17 août 2004
26 mai 2004 à 15:44
voici un bout de mon code

/*dans la classe du graphique gr*/
public void run()
{
changecouleur(g);

}


public void changecouleur(Graphics g ){
if(principal.A.Etat&&!principal.A.EtatCollecte)
{
g.setColor(Color.yellow);
g.fillOval(220,20,30,30);
}
if(principal.A.EtatCollecte)
{
g.setColor(Color.green);
g.fillOval(500,520,20,30);
}
if(principal.A.servi_panier)
{
g.setColor(Color.red);
g.fillOval(500,520,30,30);
}

/*dans la classe principal*/

/*A est une classe utilisée dans principal*/
static gr graph;
graph=new gr();
//////////////////////////////////////////////////////////////
if (A.Etat==false)
{ if((A.NbPresent>0)&&(A.HorsService))
{
N+=A.NbPresent;
A.NbPresent=0;
new Thread( gr).start(); //pour faire appel au thread du graphique
}
}
else
if (A.EtatCollecte)
{
if(N>=A.Nbp)
{
A.Etat=false;
A.HorsService=false;
A.Nbp=0;
A.servi_panier=true;
A.EtatCollecte=false;
new Thread( gr).start(); //pour faire appel au thread du graphique
}
}
0
sparetime Messages postés 34 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 17 août 2004
26 mai 2004 à 15:46
voici un bout de mon code
/*dans la classe du graphique gr*/
public void run()
{

if(principal.A.Etat||principal.A.HorsService)
changecouleur(g);

}


public void changecouleur(Graphics g ){
if(principal.A.Etat&&!principal.A.EtatCollecte)
{
g.setColor(Color.yellow);
g.fillOval(220,20,30,30);
}
if(principal.A.EtatCollecte)
{
g.setColor(Color.green);
g.fillOval(500,520,20,30);
}
if(principal.A.servi_panier)
{
g.setColor(Color.red);
g.fillOval(500,520,30,30);
}

/*dans la classe principal*/

/*A est une classe utilisée dans principal*/
static gr gr;
gr=new gr();
//////////////////////////////////////////////////////////////
if (A.Etat==false)
{ if((A.NbPresent>0)&&(A.HorsService))
{
N+=A.NbPresent;
A.NbPresent=0;
new Thread( gr).start(); //pour faire appel au thread du graphique
}
}
else
if (A.EtatCollecte)
{
if(N>=A.Nbp)
{
A.Etat=false;
A.HorsService=false;
A.Nbp=0;
A.servi_panier=true;
A.EtatCollecte=false;
new Thread( gr).start(); //pour faire appel au thread du graphique
}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
26 mai 2004 à 15:53
ton truc est assez bizarre
en fait tu peux te passer de faire ca dans un thread, par contre, ca serait mieux que ton changecouleur passe dans la methode paint ou paintsComponents avec le Graphics recuperer de paint...
et bien sur en dehors rappeler le repaint()
a la place de ton new Thread( gr).start();
ca doit marcher ...
en plus, d'ou vien ton gr???
pas tres clair ton truc franchement..
---------------------------------------------
>:) dams >:)
...en dansant la javanaise ...
---------------------------------------------
0
Rejoignez-nous