Bonjour,

j'ai une classe JPanel Graphe
dans cette le constructeur de cette classe, je fais plein de choses
et notammement j'ajoute un autre ptit JPanel qui contient un tab de JCheckBox, et quelques petites JLabel
Parallement j'utilise une methode PaintCOmponent() pour un affichage précis de qq elements

voici mon constructeur abrégé
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
	public GraphePh(AppletPh2 appP, int largeur, int hauteur) {
		super();
		int i;
		// Taille du panneau
		this.LARG = (largeur - 10);
		this.HAUT = (hauteur - 10);
		// Taille des axes
		this.H = HAUT - 85;
		this.L = LARG - 55 - 200;
	// Maximums
		this.ABCISSE_MAX = L - 10;
		this.MAX = 17280; // (17280 Žtapes de 10s soit 48H)
		this.T_MAX = this.ABCISSE_MAX * 10 /60 /60; 
 
		this.DECALAGE = 50; // en pourcentage
		this.app = appP;
 
		this.space = H / (NB) + 4;
		x = 100+(LARG-L)/2+5;
		y = (HAUT-H)/2+H+15;
 
		tab_y = new JLabel[NB]; //graduations de 2 en 2 en partant de 0
 
		// Matrices:
 
 
		// gestion de la légende
		legende = new JLabel(app.getItemName("EVOLUTION"), JLabel.CENTER);
		legende.setForeground(Color.orange);
		legende.setBounds(5, 5, LARG, 15);
		add(legende);
 
		//qn.setBounds(x+70, y+10, 80, 15);
		//add(qn);
 
		temps_simule.setBounds(x+(int)((double)LARG/5),25,150,15);
		add(temps_simule);
 
		nom_fichier.setBounds(x+(int)((double)LARG/3)+175, 25,200,15);
		add(nom_fichier);
 
		temps_calcul.setBounds(x+(int)((double)LARG/5)+150,25,45,15);
		add(temps_calcul);
 
		.......
 
		// Ajout du panneau choix cuves
		cuve = new JPanel();
		cuve.setBackground(Color.white);
		cuves = new JCheckBox[7];
		lcuve = new JLabel(app.getItemName("CUVE").toUpperCase());
		lcuve.setBackground(Color.white);
		if(app.getModele() == PanneauCuves.MODELE_5_CUVES){
			cuve.setLayout(new GridLayout(6,1)); 
			cuve.add(lcuve);
			cuves[Cuve.CUVE_DECYANURATION] = new JCheckBox(Cuve.nomCuve(Cuve.CUVE_DECYANURATION).toUpperCase(),true);
			cuves[Cuve.CUVE_DECYANURATION].setBackground(Color.WHITE);
			cuves[Cuve.CUVE_DECHROMATATION] = new JCheckBox(Cuve.nomCuve(Cuve.CUVE_DECHROMATATION).toUpperCase(),true);
			cuves[Cuve.CUVE_DECHROMATATION].setBackground(Color.WHITE);
			cuves[Cuve.CUVE_NEUTRALISATION] = new JCheckBox(Cuve.nomCuve(Cuve.CUVE_NEUTRALISATION).toUpperCase(),true);
			cuves[Cuve.CUVE_NEUTRALISATION].setBackground(Color.WHITE);
			cuves[Cuve.CUVE_COAGULATION] = new JCheckBox(Cuve.nomCuve(Cuve.CUVE_COAGULATION).toUpperCase(),true);
			cuves[Cuve.CUVE_COAGULATION].setBackground(Color.WHITE);
			cuves[Cuve.CUVE_FLOCULATION] = new JCheckBox(Cuve.nomCuve(Cuve.CUVE_FLOCULATION).toUpperCase(),true);
			cuves[Cuve.CUVE_FLOCULATION].setBackground(Color.WHITE);
			cuves[Cuve.CUVE_DECYANURATION].setForeground(getCouleur(Cuve.CUVE_DECYANURATION));
			cuves[Cuve.CUVE_DECHROMATATION].setForeground(getCouleur(Cuve.CUVE_DECHROMATATION));
			cuves[Cuve.CUVE_NEUTRALISATION].setForeground(getCouleur(Cuve.CUVE_NEUTRALISATION));
			cuves[Cuve.CUVE_COAGULATION].setForeground(getCouleur(Cuve.CUVE_COAGULATION));
			cuves[Cuve.CUVE_FLOCULATION].setForeground(getCouleur(Cuve.CUVE_FLOCULATION));
			cuves[Cuve.CUVE_DECYANURATION].addItemListener(this);
			cuves[Cuve.CUVE_DECHROMATATION].addItemListener(this);
			cuves[Cuve.CUVE_NEUTRALISATION].addItemListener(this);
			cuves[Cuve.CUVE_COAGULATION].addItemListener(this);
			cuves[Cuve.CUVE_FLOCULATION].addItemListener(this);
			cuve.add(cuves[Cuve.CUVE_DECYANURATION]);
			cuve.add(cuves[Cuve.CUVE_DECHROMATATION]);
			cuve.add(cuves[Cuve.CUVE_NEUTRALISATION]);
			cuve.add(cuves[Cuve.CUVE_COAGULATION]);
			cuve.add(cuves[Cuve.CUVE_FLOCULATION]);
			cuve.setBounds(40,40,150,140);
		} 
		} 
		add(cuve); //!! problème avec paint component !!!??
		nbr_cuve_selectionnee = 0;
 
	}
voici ma fonction PaintComponent

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
44
45
/**
	 * Dessin des axes et des graduations 
	 */
	public void paintComponent(Graphics g) {
    	super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
       
		//   boolean etatPrecedent;
		
		int[] tab_x = new int[3];
		int[] tab_y = new int[3];
		
		g2d.setColor(Color.black);
		
		// les axes
		tab_x[0] = x;
		tab_y[0] = y - H - 15;
		tab_x[1] = tab_x[0];
		tab_y[1] = y;
		tab_x[2] = tab_x[1] + L;
		tab_y[2] = tab_y[1];
		g2d.drawPolyline(tab_x, tab_y, 3);
		
		// les fleches
		tab_x[0] = x -5;
	..
		g2d.drawPolyline(tab_x, tab_y, 3);
		
		........
		g2d.drawPolyline(tab_x, tab_y, 3);
		
		// les graduations
		
		
		// on affiche un trait pointille à 7
		
		}
		add(cuve); //je tente bien de faire ce que je peux pour 
//que le panneau JPanel cuve reste tjrs présent
		// on affiche le graphe deja present
		this.afficherAllPoints(g);

	    		}
			}
En fait je vois pas pourquoi sous certaines conditions dans une fonction AfficherPoint et dans cette fonction je fais appel à PaintComponent : les panneaux ou Jlabel définit dans le constructeur disparaissent

Voici ces conditions

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
public void afficherPoint() {
		Graphics g = this.getGraphics();
		Graphics2D g2d = (Graphics2D) g;
		ok = true;
}
							// Courbe du ph seuil pompe 
}
	f(ok){
g2d.drawLine(abcisseEnCours-1+x, tab_coor[indiceTab-(int)pas][i][c], abcisseEnCours+x, tab_coor[indiceTab][i][c]);
		//		
FormeColoree shape2 = new FormeColoree(new Line2D.Double(abcisseEnCours-1+x, tab_coor[indiceTab-(int)pas][i][0], abcisseEnCours+x, tab_coor[indiceTab][i][0]) , g2d.getColor());
shapes2.add(shape2);
					
else { // Lorsqu'on arrive au bout du graphe on efface et décale la courbe vers la gauche 
c'est sous ces conditions que ça bloque
abcisseEnCours = this.ABCISSE_MAX * (100 - this.DECALAGE) / 100;
			g2d.clearRect(0,0,LARG,HAUT);
			this.shapes1.clear();
			this.shapes2.clear();
			this.add(cuve);
			this.paintComponent(g);
		//	shapes1.add(shapes1.add(new Line2D.Double(abcisseEnCours-1+x, tab_coor[indiceTab-(int)pas][i][0], abcisseEnCours+x, tab_coor[indiceTab][i][0]));
		}
	}
Merci