Bonjour,

J'ai une dialog où certains widgets sont invisibles sous Linux, alors que sous windows aucun problème.

Voici le morceau de code :
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
 
 
protected Control createDialogArea( Composite parent ) {
 
	final Composite dialogArea = new Composite(parent, SWT.NONE);
	dialogArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
 	dialogArea.setLayout(new GridLayout(1, true));
 
	Composite compositeCluster = new Composite(dialogArea, SWT.NONE);
	compositeCluster.setLayout(new GridLayout(2, false));
         GridData gd_composite_1 = new GridData(SWT.FILL, SWT.FILL, true, false);
         compositeCluster.setLayoutData(gd_composite_1);
 
        Label lblRebuildWithBranch = new Label(compositeCluster, SWT.NONE);
	lblRebuildWithBranch.setText("Cluster");
 
        Composite compositeGeneral = new Composite(dialogArea, SWT.NONE);
        compositeGeneral.setLayout(new GridLayout(1, false));
        gd_composite_1 = new GridData(SWT.FILL, SWT.FILL, true, true);
        compositeGeneral.setLayoutData(gd_composite_1);
 
       final ScrolledComposite scrolledCompositeSections = new ScrolledComposite(compositeGeneral, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
      scrolledCompositeSections.setLayout(new FillLayout());
        scrolledCompositeSections.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
 
        scrolledCompositeSections.setExpandHorizontal(true);
        scrolledCompositeSections.setExpandVertical(true);
 
 
        Composite composite1 = new Composite(scrolledCompositeSections, SWT.BORDER);
        composite1.setLayout(new GridLayout(1, false));
        gd_composite_1 = new GridData(SWT.FILL, SWT.FILL, true, true);
        composite1.setLayoutData(gd_composite_1);
 
        scrolledCompositeSections.setContent(composite1);
 
        Composite compositeDestination = new Composite(composite1, SWT.BORDER | SWT.CENTER);
        compositeDestination.setLayout(new GridLayout(1, false));
        gd_composite_1 = new GridData(SWT.FILL, SWT.FILL, true, false);
        compositeDestination.setLayoutData(gd_composite_1);
 
        CLabel lbl = new CLabel(compositeDestination, SWT.LEFT);
    	gd_composite_1 = new GridData(SWT.FILL, SWT.FILL, true, true);
    	lbl.setLayoutData(gd_composite_1);
    	lbl.setText("Destination");
 
       Composite compositesTableau = new Composite(composite1, SWT.NONE | SWT.CENTER);
         compositesTableau.setLayout(new GridLayout(2, false));
        gd_composite_1 = new GridData(SWT.FILL, SWT.FILL, true, true);
        compositesTableau.setLayoutData(gd_composite_1);
       return dialogArea;
}
Dans mon ScrolledComposite rien ne s'affiche, je vois mon compositeDestination puisqu'il est BORDER mais le label n'est pas visible.

Si je met le label directement dans le composite1 il s'affiche bien, mais j'ai besoin dans mon ScrolledComposite de plusieurs zones c'est pour ça que j'ai mis ce composite1 à 1 colonne qui contient
- le compositeDestination à 1 colonne contenant un label
- le compositesTableau à 2 colonne contenant un label dans le colonne 1 et un tableau dans la colonne 2.

Et je ne peux pas me passer de ce composite1 puisqu'il faut bien que je mette un composite (et un seul ?) dans le ScrolledComposite (setcontent).

Et je rappelle que ça marche très bien sous windows, du coup lorsque j'ai créée cette architecture je ne me suis pas méfiée ...

Une idée de la bêtise que j'ai pu faire ???