sparetime
Messages postés34Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention17 août 2004
-
26 mai 2004 à 14:14
dmaillet
Messages postés500Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention11 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
dmaillet
Messages postés500Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention11 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 ...
---------------------------------------------
sparetime
Messages postés34Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention17 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
}
}
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
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
dmaillet
Messages postés500Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention11 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 ...
---------------------------------------------