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.
superposition partielle :
superposition totale :
je vous joins aussi le code qui met à jours le panel...
moi mes composants sont des PacComponent....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
si qq'un voit d'ou vient l'erreur...
Partager