Bonjour à tous !

Je suis en train de développer une petite application et j'utilise SWT.
J'ai un ScrolledComposite sur ma fenêtre sur lequel j'ajoute dynamiquement de nouveaux boutons radios.
J'ai mis un RowLayout sur ce ScrolledComposite mais chaque nouveau bouton se place derrière l'ancien au lieu de se placer sur la même ligne (je le sais car je peux supprimer le bouton radio sélectionné, et les derniers ajoutés apparaissent en dessous).

Je n'utilise pas de texte mais des images pour ces boutons radios (je ne pense pas que celà soit en cause mais je préfère préciser, on ne sait jamais).

Voilà le code qui définit mon ScrolledComposite :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
scTiles = new ScrolledComposite(gStaticTiles, SWT.V_SCROLL | SWT.BORDER);
RowLayout scrolledComposite2Layout = new RowLayout(SWT.VERTICAL);
scrolledComposite2Layout.wrap = true;
scrolledComposite2Layout.justify = false;
scrolledComposite2Layout.pack = false;
scrolledComposite2Layout.marginLeft = 40;
scTiles.setLayout(scrolledComposite2Layout);
scTiles.setBounds(10, 20, 114, 204);
et voici mon code qui gère l'ajout dynamique de bouton :

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
 
//Ajout d'une tuile
btAdd.addSelectionListener(new SelectionAdapter() {
	public void widgetSelected(SelectionEvent evt) {
	//System.out.println("btAdd.widgetSelected, event="+evt);
 
	//Tile contiendra un path vers un fichier .png
	Tile newTile = new Tile();
 
	FileDialog dlgFile = new FileDialog(shell, SWT.MULTI);
	dlgFile.setFilterExtensions(new String[] {"*.png", "*.PNG"});
 
	//Reconstitution des path + filenames en cas de multisélection
	String file = dlgFile.open();
	if(file != null){
		String[] selected = dlgFile.getFileNames();
		String[] filenames = new String[selected.length];
		for (int i = 0; i < selected.length; i++) {
			String tmp = dlgFile.getFilterPath();
 
			if(tmp.charAt(tmp.length() - 1)!= File.separatorChar){
				tmp += String.valueOf(File.separatorChar);
			}
 
			tmp += selected[i];
 
		        filenames[i] = tmp;											
		}
 
		newTile.setFilenames(filenames);
 
		tiles.add(newTile);
 
		//Création d'un bouton dynamique permettant de sélectionner la tuile
		Button newbtTile = new Button(scTiles, SWT.RADIO);
 
		newbtTile.setSize(33, 16);
		newbtTile.setData(newTile);
		try {
			newbtTile.setImage(new Image(display, new FileInputStream(new File(newTile.getFilenames()[0]))));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
 
		newbtTile.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent evt) {
			//Pour garder une trace du bouton sélectionné
				selectedTile = (Control) evt.getSource();
			}											
		});									
	}
}
});
Merci d'avance pour votre aide