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 :
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 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);
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
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(); } }); } } });![]()
Partager