Bonjour à tous,
J'ai un problème d'actualisation de JPanel.
J'ai regardé pas mal de tutos et dans pleins de forum mais impossible de corriger mon bug d'affichage.
Je développe actuellement un jeu de carte multijoueurs.
Le problème est le suivant :

c'est une partie qui se joue tour à tour. C'est à dire que j'affiche les cartes du premier joueur dans un panel ensuite dès qu'il a joué, je fais un removeAll() du panel et je le reconstruit avec le joueur suivant ainsi que ces cartes.
Et pour finir je fais un "panel.update(panel.getGraphics())" et un frame.validate().

Et là, j'ai l'impression que le panel du joueur d'avant n'est pas complétement effacé car il me reste les dernières cartes de celui-ci dans le panel du nouveau joueurs.

Quelqu'un pourrait-il m'éclairer sur le rafraichissement de mon panel?

Merci d'avance.

Cordialement
K.L


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
 
//Création du panel Joueur
private void affichageJoueurActuel(){
panelJoueurActuel = new JPanel();
			panelJoueurActuel.setBounds(40, 580, 1300, 160);
			panelJoueurActuel.setOpaque(false);
			scrollPane = new JScrollPane();
			scrollPane.setPreferredSize(new Dimension(1300,160));
 
			int positionX = 110;
			int indiceCarte = 1;
			panelJoueurActuel.setLayout(null);
			joueurActuelButton = new JButton(partie.getJoueurActuel().getNom());
			joueurActuelButton.setBounds(0, 0, 110, 160);
			panelJoueurActuel.add(joueurActuelButton);
			plateau.getContentPane().add(panelJoueurActuel);
 
 
			for(Carte c : partie.getJoueurActuel().getMainJoueurs().getListeCarte()){
				String carteAfficher=""; 
				carteAfficher = String.valueOf(c.getValeur());
				if(carteAfficher.equals("14")){
					carteAfficher = c.getCouleur();
				}
				else{
					carteAfficher += c.getCouleur();
				}
				JButton joueurActuelCartesButton = new JButton();
				joueurActuelCartesButton.setName(String.valueOf(indiceCarte));
				joueurActuelCartesButton.setBounds(positionX, 0, 110, 160);
				joueurActuelCartesButton.setIcon(new ImageIcon(LoadImage.imagesDesCartes.get(carteAfficher)));
				panelJoueurActuel.add(joueurActuelCartesButton);
				indiceCarte = indiceCarte + 1 ;
 
				joueurActuelCartesButton.addActionListener(new ActionListener() {
 
					@Override
					public void actionPerformed(ActionEvent e) {
						JButton j1 = (JButton)e.getSource();
						if(partie.estJouable(partie.getJoueurActuel().getMainJoueurs().getListeCarte().get(Integer.parseInt(j1.getName())-1))){
							 finManche = partie.jouerUneCarteVu(Integer.parseInt(j1.getName()));
						}
						else{
							JOptionPane.showMessageDialog(plateau, "la carte n'est pas valable");
						}
						if(finManche){
							finManche();
						}
 
						if(boutonCarte.isVisible()){
							if(!carteClique){
								partie.getTalon().piocher(2,partie.getJoueurActuel().getMainJoueurs().getListeCarte());
								boutonCarte.setVisible(false);
							}
							else{
								carteClique = false;
							}
						}
					}
				});
 
				positionX = positionX + 60;
			}
			plateau.getContentPane().add(panelJoueurActuel);
}
 
 
//mise à jour de l'interface Graphique
@Override
	public void update(Observable arg0, Object arg1) {
 
			panelJoueurActuel.removeAll();
 
			affichageJoueurActuel();
 
			 panelJoueurActuel.update(panelJoueurActuel.getGraphics());
 
			plateau.validate();
 
 
	}