Bonjour à tous !

je tire mon chapeau a celui ou celle qui sera capable de résoudre ce petit problème que j'ai depuis ce matin.

J'ai crée un JScrollPane dans lequel j'aimerais aficher une liste de JPanels qui contienne eux meme des composants.

Pour l'instant je me limite à un composant. Mon probleme est que le panel prends en dimension l'intégralité du JScrollPane alors que j'aimerais qu'il prenne les dimensions que je lui ai passées en PreferedSize.

Mon code:

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
 
public class PnlBead extends javax.swing.JPanel {
 
    private javax.swing.JButton btClose;
    private javax.swing.JLabel lblInt;
    private javax.swing.JLabel lblName;
    private javax.swing.JLabel lblPop;
 
public PnlBead(Bille xbille){
        super();
        setLayout(new BorderLayout());
        initComponents();
        btClose.setIcon(new ImageIcon("./ico/cancel.png"));
        blName.setText("<html><font color=blue>" + xbead.getName() + "</font></html>");
         lblPop.setText("Population: " + xbead.getPopulation());
         lblInt.setText("Intensity: " + xbead.getIntensity());
les dimensions des composants et du panel sont fixés via NetBeans
voici le code generé automatiquement :
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
 
private void initComponents() {
 
        btClose = new javax.swing.JButton();
        lblName = new javax.swing.JLabel();
        lblPop = new javax.swing.JLabel();
        lblInt = new javax.swing.JLabel();
 
        setBorder(javax.swing.BorderFactory.createEtchedBorder());
        setMaximumSize(new java.awt.Dimension(667, 54));
        setMinimumSize(new java.awt.Dimension(667, 54));
        setPreferredSize(new java.awt.Dimension(667, 54));
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(btClose)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(lblName, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(lblPop, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(14, 14, 14)
                .addComponent(lblInt, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(301, Short.MAX_VALUE))
        );
 
        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {lblInt, lblName, lblPop});
 
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(lblPop, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(lblInt, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(lblName, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE)
                    .addComponent(btClose, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE))
                .addContainerGap())
        );
 
        layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {lblInt, lblName, lblPop});
 
    }

et lorsque je construit un composant pour l ajouter au JScrollPane:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
tmpPnl.setPreferredSize(new Dimension((int)scrPneAnalytes.getSize().getWidth()-10,(int)54));
scrPneAnalytes.setViewportView(tmpPnl);
Ainsi si quelqu'un a un tuyau pour m'aider à fixer la taille du JPanel je lui en serrais tres reconnaissant ! Merci!