Bonjour,

Je comprends pas comment marche les GridLayout, enfin, j'ai bien compris comment définit les GridData et les attributs du GridLayout. Mais je n'arrive pas à faire ce que je veux.

Pour illustrer le propos, je vous fournis ce petit main :

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
 
public static void main(String[] args) {
		Display display = new Display();
		final Shell shell = new Shell(display);
		shell.setSize(200, 200);
		shell.setText("Layout Example");
		GridLayout gridLayout = new GridLayout();
		gridLayout.numColumns =1;
		shell.setLayout(gridLayout);
 
		Button button = new Button(shell, SWT.PUSH);
		button.setText("add");
 
 
		final ListViewer viewer = new ListViewer(shell); 
		GridData data = new GridData();
		data.grabExcessHorizontalSpace = true;
		data.horizontalAlignment = SWT.FILL;
		viewer.getControl().setLayoutData(data);
 
		button.addMouseListener(new MouseAdapter() {
			public void mouseDown(org.eclipse.swt.events.MouseEvent e) {
				viewer.getList().add("UNE LIGNE");
			};
		});
 
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}
Le Shell fait 200*200, faites le test suivant :
- Lancer le main
- cliquer 7 fois sur le bouton
- Maximiser le Shell
- Restaurer le Shell

=> Bingo, vous avez perdu une partie des éléments de votre liste et la scrollBar n'est pas apparu. Je n'ai rien trouvé pour résoudre ce problème facilement et de manière général, alors si vous avez des infos.

Sinon, savez-vous comment gérer les anciens poids du GridBagLayout de Swing dans le GridLayout version SWT ?