Bonjour,
J'ai un problème lorsque j'utilise SWT pour créer une ScrollBar.
J'ai un Composite contenant une liste de composants (dans l'exemple que j'ai mis, ce sont des boutons). A ce composite j'aurais aimé rajouter une ScrollBar verticale afin de dérouler la liste des Composants.
J'ai donc commencé par rajouter un ScrolledComposite qui fonctionne très bien.
Cependant, niveau visuel, j'aurais préféré que la scrollbar soit rattaché à la liste et qu'elle est la même taille. J'ai donc ajouté en paramètre du composite de la liste SWT.V_SCROLL. Cette fois-ci la scrollbar s'affiche mais sans qu'il y ait de relation entre elle et la liste.
Je suppose que mon problème vient du fait que je n'ai pas créé cette relation comme il a pu se faire entre le ScrolledComposite et la liste en faisant "setContent(...)" mais je ne vois pas comment faire.
En fait, j'aimerai avoir niveau esthétisme la deuxième scrollbar mais ayant l'action du ScrolledComposite.
Autre question, j'aurais souhaité diminuer la taille du Composite contenant la liste mais je n'y arrive pas. En cherchant sur le net, j'ai pu lire que c'est à cause du Layout qu'on ne peut pas redéfinir la taille d'un composite mais en faisant "setLayout(null)", les boutons ne se créés plus. Du coup, je ne vois pas vraiment comment faire.
Voici l'exemple que j'ai fait pour illustrer mes propos :
Merci d'avance pour votre aide
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 public static void main (String [] args) { Display display = new Display (); Shell shell = new Shell (display); GridLayout layout = new GridLayout(2, false); shell.setLayout(layout); // composite pour la liste de boutons Composite composite = new Composite(shell, SWT.BORDER|SWT.V_SCROLL); composite.setLayout(new GridLayout()); // création des boutons for (int i = 0; i < 30; i++) { Button button = new Button(composite, SWT.PUSH); button.setText("Bouton "+i); } // Scrollbar ScrolledComposite scrolledComposite = new ScrolledComposite (shell, SWT.V_SCROLL); scrolledComposite.setContent(composite); shell.open (); while (!shell.isDisposed ()) { if (!display.readAndDispatch ()) display.sleep (); } display.dispose (); }![]()
Partager