Bonjour,

Je souhaite afficher un objet de type ADList (objet qui hérite de JList) dans un JScrollPane. Le problème est que le barre verticale permettant de scroller n'apparaît pas lorsque les éléments dépassent la taille de ma JList. Si je force la présence de la scroll bar verticale en utilisant ".setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS)", la barre apparaît en grisée et reste inactive lorsque les éléments dépassent la taille de la JList.

J'ai vu sur le forum que cela pouvait venir d'une mauvaise définition du Layout. J'utilise un GridBagLayout, néanmoins, cette indication ne m'a pas permis de trouver la réponse.

Voici un extrait de la classe dans laquelle je déclare mon JScrollPane :
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
...
 
public class SelectionFrame extends JFrame{
 
	private ADList adl = new ADList();
 
	public SelectionFrame(){
 
		JPanel pane = new JPanel(new GridBagLayout());
 
                /* Sans cette ligne, les elements de la JList disparaissent quand j'en ajoute plus de deux (si jamais ca vous aide ou si vous pouvez m'expliquer pour quoi je suis preneur '-_- ... */
		adl.setPrototypeCellValue(" ");
 
		JScrollPane jsp_adl = new JScrollPane(adl);
 
		/* J'ai mis une petite valeur en y pour voir si cela faisait apparaitre la ScrollBar mais non... */
		jsp_adl.setPreferredSize(new Dimension(243, 10));
 
		pane.add(jsp_adl, getConstraints(0, 1, 2, 1, 0.1, 0.4, GridBagConstraints.WEST, GridBagConstraints.VERTICAL));
 
		...
 
		this.setSize(520, 700);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 
		this.setContentPane(pane);
		setVisible(true);
 
	}
 
	public GridBagConstraints getConstraints(int x, int y, int width, int height, double wX, double wY, int anchor, int fill){
 
		GridBagConstraints c = new GridBagConstraints();
 
		c.gridx = x;
		c.gridy = y;
		c.gridwidth = width;
		c.gridheight = height;
		c.weightx = wX;
		c.weighty = wY;
		c.anchor = anchor;
		c.fill = fill;
 
		return c;
	}
 
	...
 
}
Cela vous inspire ?