Mon dessin s'efface, et j'ai essayé diverses choses
Bonjour,
Je sais que cette question revient souvent, mais là je ne trouve pas. La classe TracePlan calcule les coordonnées des points à tracer, puis donne l'ordre de les imprimer à l'écran :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class TracePlan extends AbstractAction{
public TracePlan (PlanC C1, ValTransfo[] TDP, int nT, Panneau pan)
{this.C1 = C1;
this.TDP = TDP; //Tableaux de valeurs.
this.nT = nT;
this.pan = pan; //Le panneau où sera tracé le dessin.
}
public void actionPerformed (ActionEvent e)
{NbrePts = C1.getNombrePoints();
ZoomVal = C1.getZooming();
/*etc., suite à cette récupération des valeurs vient une série de calculs
de coordnnées des points à tracer*/
Color ClT = new Color(TDP[k].getRedVal(), TDP[k].getGreenVal(), TDP[k].getBlueVal());//Va chercher les valeurs de la couleur de fond.
Color Cfd = new Color (C1.getRougeP(), C1.getVertP(), C1.getBleuP());
pan.FondPan(Cfd); //Couleur de fond.
if((0<=CoX) && (CoX<=800) && (0<=CoY) && (CoY<=550))//limites de l'écran.
{pan.TracePt(CoX, CoY, ClT);
}//ordonne de tracer le point. |
Le Jpanel fait l'objet d'une classe à part, dont voici le code intégral :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Panneau extends JPanel {
public void paintComponent(Graphics g)
{super.paintComponent(g);
}
public void FondPan(Color Cfd){
this.Cfd = Cfd;
setBackground(Cfd);
}
public void TracePt(int CoX, int CoY, Color ClT){
this.ClT = ClT;
this.CoX = CoX;
this.CoY = CoY;
Graphics g = getGraphics();/*Si il n'y est pas, cela génère une exception.*/
g.setColor(ClT); //Couleur du point.
g.drawOval (CoX, (550-CoY),1,1); //réglage du positionnement et de la largeur.
g.fillOval(CoX, (550-CoY),1,1);
g.dispose();
super.paintComponent(g);//n'apporte rien!
}
Color ClT, Cfd;
int CoX, CoY;
Graphics g;
} |
Problème classique, les points s'affichent, mais ne résistent pas au redimensionnement des fenêtres. Mieux, si je change la couleur de fond, celle-ci se met sur le dessin, et je dois relancer la classe TracePlan pour revoir apparaitre le graphisme.
La méthode repaint, où qu'elle soit placée, efface les points à peine créés. J'ai essayé de tracer depuis TracePlan en rappelant Graphics g dans cette classe, le problème était le même!
Non, vraiment, je n'arrive pas à trouver. (Je ne pense pas avoir besoin de threads ici, il n'y a pas tant de points à tracer).