Problème avec SWT ScrollBar
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 :
Code:
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 ();
} |
Merci d'avance pour votre aide ;)