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 :
la liste extends Jpanel et utilise le gestionnaire Borderlayout :
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");
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
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.
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); }
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 :
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 !!
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(); }
Ou faut-ils mettent les repaint() ??
Merci de votre aide








Répondre avec citation
Partager