Probleme de rafraichissement d'un panel de plusieurs compo.
Bonjour,
Certains reconnaitrons le début du post. j'ai un panel contenant plusieurs composants graphiques.
J'ai la possibilité de les déplacer.
Pour cette exemple on va dire que j'ai 2 composants : A un gros, et B un petit.
si je déplace B sans passer sur A tout va bien. si je passe B sur A, mais sans que B soit totalement dans A, mon image scintille, c'est un probleme, mais ce n'est pas le sujet, par contre si je met completement mon image B sur A (je suis toujours en déplacement - dragged) alors là, c'est la catastrophe, mon image de B ne correspond plus à elle meme mais correspond a une partie de l'image de A....
en image cela donne :
au départ.
http://img233.imageshack.us/img233/3...ebut4yc.th.gif
superposition partielle :
http://img233.imageshack.us/img233/9...ours1ez.th.gif
superposition totale :
http://img233.imageshack.us/img233/2...ssus0uq.th.gif
je vous joins aussi le code qui met à jours le panel...
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
/**
* Rafraîchit les composants ajoutés au DesignPanel.
*
* Un tri est effectué pour qu'apparaissent en premier plan les formes spéciales.
**/
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int count = getComponentCount();
Component[] pacComponents = new Component[count];
Component[] specialForms = new Component[count];
Component[] other = new Component[count];
int j = 0;
int k = 0;
int l = 0;
for (int i = 0; i < count; i++) {
Component component = getComponent(i);
if (component instanceof PacComponent) {
pacComponents[j] = component;
j++;
} else if (component instanceof SpecialForm) {
specialForms[k] = component;
k++;
} else {
other[l] = component;
l++;
}
}
// On commence par dessiner les others.
for (int m = 0; m < l; m++) {
//other[m].repaint();
other[m].paint(g);
}
// Ensuite on dessine les pacComponents.
for (int m = 0; m < j; m++) {
pacComponents[m].repaint();
}
// EnFin, dessine les formes spéciales.
for (int m = 0; m < k; m++) {
specialForms[m].paint(g);
}
} |
moi mes composants sont des PacComponent....
si qq'un voit d'ou vient l'erreur...