Bonjour à tous!
Maintenant que je commence à maitriser les Layout, je suis tombé sur le problème suivant:
J'ai des contrôles dans un layout.
Je veux masquer un des contrôle.
Solution 1:
Je fais donc un setVisible(false).
Malheureusement le layout n'est pas recalculé, il reste un "trou" à la place de mon contrôle.
question: est ce normal? logique?
Solution 2:
Est ce que je peux enlever mon contrôle du composite?
Par example en lui changeant son parent pour un autre composite non visible que j'aurais ajouté.
Ca marchouille sauf que:
- je trouve ça pas très clean
- je suis obligé redimensionner le tout pour declencher un recalcul de layout
- quand je le remet dans sShell, il se retrouve dernier dans mon layout.
Question : comment peut on choisir l'ordre des fils dans un composite?
Bref comment faire?
Merci
Voici un bout de code ( généré avec Eclipse & VisualEditor)
Solution1
Solution2
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 import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Shell; public class TestLayout { private Shell sShell = null; private Button button = null; private Button button1 = null; /** * This method initializes sShell */ private void createSShell() { sShell = new Shell(); sShell.setText("Shell"); sShell.setSize(new Point(300, 200)); sShell.setLayout(new RowLayout()); button = new Button(sShell, SWT.NONE); button.setText("buton"); button1 = new Button(sShell, SWT.NONE); button1.setText("button1"); button1.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { button.setVisible(!button.getVisible()); } }); } }
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 import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; public class TestLayout { private Shell sShell = null; private Button button = null; private Button button1 = null; private Composite composite = null; /** * This method initializes sShell */ private void createSShell() { sShell = new Shell(); sShell.setText("Shell"); sShell.setSize(new Point(300, 200)); sShell.setLayout(new RowLayout()); button = new Button(sShell, SWT.NONE); button.setText("buton"); button1 = new Button(sShell, SWT.NONE); button1.setText("button1"); createComposite(); button1.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { if (button.getParent() == sShell) { button.setParent(composite); } else { button.setParent(sShell); } } }); } /** * This method initializes composite */ private void createComposite() { composite = new Composite(sShell, SWT.NONE); composite.setSize(1, 1); composite.setVisible(false); } }
Partager