Bonjour,

j'ai un petit soucis pour redimensionner un widget Text avec SWT.
Mon problème se trouve ds une grille assez complexe mais j'ai fait un petit exemple qui reflète bien mon soucis : ne pas redimensionner le premier champ Text (le code se trouve plus bas).

Mode 2 colonnes fenetre "packée"

Mode 2 colonnes fenetre extend

Mode 3 colonnes fenetre extend


Je met un petit bout de code pour illuster le problème (sans arguments mode 2 colonnes, avec mode 3 colonnes).
Je ne vois pas pourquoi ce design avec ce layout ne fonctionne pas, mais je suis loin d'être un spécialiste !
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package test;
 
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
 
public class SWTTest {
	Shell shell;
 
	public static void main(String[] args) {
		Display display = new Display();
		SWTTest tester = new SWTTest ();
		Shell shell = tester.open (display);
 
		if (args.length==0) {
			shell.setText (2 + " columns test");
			tester.createWindow(shell, 2);
		} else {
			shell.setText (3 + " columns test");
			tester.createWindow(shell, 3);
		}
 
		shell.pack();
		shell.open ();
 
		while (!shell.isDisposed ()) {
			if (!display.readAndDispatch ()) {
				display.sleep ();
			}
		}
		display.dispose ();
 
		System.out.println("the end.");
	}
 
	private Shell open(Display display) {
		shell = new Shell (display);
		return shell;
	}
 
	private void createWindow(Composite parent, int nbCols) {
		// On cree un GridLayout pr le nbre de colonnes
		GridLayout gl = new GridLayout();
		gl.numColumns = nbCols;
		parent.setLayout(gl);
 
		// Le text prend toutes les colonnes sauf la derniere
		Text text1 = new Text(parent, SWT.BORDER);
		text1.setText("text1");
		GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
		gridData.horizontalSpan = nbCols - 1;
		text1.setLayoutData(gridData);
 
		// Le bouton prend la derniere colonne
		Button check = new Button(parent, SWT.CHECK);
		check.setText("check");
 
		// Le text prend toutes les colonnes
		Text text2 = new Text(parent, SWT.BORDER);
		text2.setText("text2");
		gridData = new GridData(GridData.FILL_HORIZONTAL);
		gridData.horizontalSpan = nbCols;
		text2.setLayoutData(gridData);
	}
}