Bonjour,

Voici mon probleme :

J'ai une Jframe qui contient un panel : panel1

ce panel1 utilise le gestionnaire borderLayout

J'ajoute au centre de panel1 un panel : panCenter

ce panCenter utilise le gestionnaire CardLayout :

ensuite :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
	this.listeTexte = new liste(lp,this,this.HeaderTexte);
	this.listeVideo = new liste(lp,this,this.HeaderVideo);
	this.listeAudio = new liste(lp,this,this.HeaderAudio);
 
this.panCenter.setLayout(cardL);
 
   this.panCenter.add(listeVideo,"video");  
   this.panCenter.add(listeTexte,"texte"); 
   this.panCenter.add(listeAudio,"audio");
la liste extends Jpanel et utilise le gestionnaire Borderlayout :

j'ajoute donc au centre un panel : panCenter2 ,

Dans ce panCenter2 j'ajoute des panel qui contiennent une image et un titre contenu dans une arrayList passé en paramètre de liste :

Voici une partie du code de la classe liste
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
 
public class liste extends JPanel implements FocusListener, MouseListener {
 
public liste(panelListener pl, PanelFichiers f, List<header> header) {
 
this.listener = pl;
this.panel = f;
 
BorderLayout b= new BorderLayout();
this.setLayout(b);
 
this.panCenter = new JPanel();
 
FlowLayout flow = new FlowLayout(FlowLayout.LEFT);
panCenter.setLayout(flow);
 
this.add(panCenter, BorderLayout.CENTER);
 
this.allHeader = header;
 
maj(allHeader);
repaint();
 
}
 
public void maj(List<header> headers) {
 
		for (int i = 0; i < headers.size(); i++) {
			// System.out.println(namefichier[i]);
			this.t = new JPanel();
			BoxLayout box = new BoxLayout(t, BoxLayout.Y_AXIS);
 
			t.setLayout(box);
			t.setBackground(Color.white);
			int X = 80;
			int Y = 80;
			t.setMaximumSize(new Dimension(X, Y));
			t.setPreferredSize(new Dimension(X, Y));
			t.setSize(X, Y);
 
                      this.infoFichier = headers.get(i);
                      String nom = infoFichier.getNom();
                    JLabel titre = new JLabel(nom);
 
                       t.add(titre);
			t.setAlignmentY(TOP_ALIGNMENT);
 
                         this.panCenter.add(t);
}
J'usqu'a la tout va bien, quand je lance mon application j'ai bien un affichage (miniature + titre ) dans des petits panel, qui dépend de l'arraylist.

Pour avoir la possibilité de d'afficher dans un autre autre ordre je retri la liste dans une methode et je rappelle maj(liste trié) : avec la "nouvelle" arrayliste :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public void triNom() {
 
		this.panCenter.removeAll();
 
		Collections.sort(this.allHeader, new triNom("nom"));
 
		maj(allHeader);
 
 
		repaint();
 
	}
Les panels avec l'image et le titre ne s'affiche plus : je pense que c'est un probleme de repaint car des que je resize la frame , il apparaissent et dans le bon ordre !!

Ou faut-ils mettent les repaint() ??

Merci de votre aide