Voilà plusieurs heures que je bloque sur un pb.
Mon but est de pouvoir créer dans un shell autant de composite que possible.
L'idée est donc d'avoir un composite (spécifique avec un bouton): quand on clique sur le bouton un SashForm est crée avec ce composite a gauche et un NOUVEAU a droite et ainsi de suite.
Voioci mon code :
Si vous le lancez et que vous cliquiez tjrs sur le bouton tout a droite tout marche correctement. Mais il suffit de cliquer sur le bouton de gauche pour que tout soit basculé..
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 import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class SashFormLayout{ static int i = 1; public static void main(String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setLayout(new FillLayout()); Comp comp = new SashFormLayout().new Comp(shell, SWT.NONE); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } public class Comp extends Composite{ Comp(Composite parent,int style) { super(parent, style); init(); addListeners(); } public void init() { this.setLayout(new FillLayout()); Button b = new Button(this, SWT.PUSH); b.setText("Horizontal Layout" + i++); b.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e) { System.out.println("Create Horizontal Layout"); create(SWT.HORIZONTAL); } }); this.layout(); } public void addListeners() { } public void create(int style) { SashForm form = new SashForm(this.getParent(), style); form.setLayout(new FillLayout()); this.setParent(form); this.setLayout(new FillLayout()); Comp comp = new Comp(form, SWT.NONE); comp.setLayout(new FillLayout()); this.getShell().layout(true, true); } } }
Je sèche.. si quelqu'un peut m'aider..
Partager