IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SWT/JFace Java Discussion :

Widgets invisibles sous Linux


Sujet :

SWT/JFace Java

  1. #1
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut Widgets invisibles sous Linux
    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 ???

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Une piste (peut-être): tu as un FillLayout sur ton ScrolledComposite et tu passes un GridData à ton Composite composite1.
    Normalement, tu devrais prendre une exception pour ça (il me semble). Remarque, le FillLayout est peut-être plus permissif en terme de layoutData.

    C'est à essayer. J'ai pu le tester que sur Windows, mais si tu vires le layoutData, ça s'affiche toujours.

    Voilà, à+
    Gueritarish

  3. #3
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut
    Niet !

    Si je passe un GridLayout a mon ScrolledComposite ça ne s'affiche toujours pas.

    Si je met directement mon label dans mon composite1 et non dans le compositeDestination ça marche...

    Est-ce que le fait que dans mon ScrolledComposite je met un premier composite qui contient lui même deux autres composites qui eux contiennent les wigdets, peut poser problème ?

    a+

  4. #4
    Membre habitué Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Points : 193
    Points
    193
    Par défaut
    Alors en repartant de rien, j'ai enlevé tous les layout, les layoutdata... et reconstruite ma dialog petit à petit ... jusque m'appercevoir que c'était le SWT.CENTER qui merdait !!!

    tous supprimés et hop ...



    et voilà ça marche très bien !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/12/2008, 17h00
  2. [Série] Accès au port série sous linux
    Par ghost dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 10/10/2007, 10h43
  3. Comment désinstaller MySQL sous linux
    Par nahmsath dans le forum Installation
    Réponses: 5
    Dernier message: 18/09/2007, 10h46
  4. installer jbuilder7 sous linux
    Par rtlinfo34 dans le forum JBuilder
    Réponses: 5
    Dernier message: 30/10/2002, 19h16
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo