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 :

[SWT] Centrer verticalement le texte dans un label avec SWT


Sujet :

SWT/JFace Java

  1. #1
    Membre averti Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Points : 391
    Points
    391
    Par défaut [SWT] Centrer verticalement le texte dans un label avec SWT
    Bonjour,

    J'espère ne pas faire de doublon, mais j'ai cherché et n'ai pas trouvé de sujet correspondant à mon problème dans le forum.

    Voilà, je débute avec Java / SWT, je vous explique mon souci.

    J'ai un label dans un shell. Ce label prend toute la largeur du shell (horizontalement donc), et a une hauteur définie à 100. Par défaut, mon texte à l'intérieur de ce label est affiché en haut (top).

    Est-il possible de centrer ce texte verticalement dans le label ? Et si oui, pouvez-vous m'indiquer la syntaxe car je n'ai rien trouvé qui fonctionne ...

    Voici le début de mon code si ça peut vous aider à y voir plus clair :

    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
    // [...]
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("Entete");
    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 3;
    shell.setLayout(gridLayout);
     
    Label titre = new Label(shell, SWT.CENTER | SWT.BORDER);
    titre.setText("Blabla");
     
    GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    gridData.horizontalSpan = 3;
    gridData.grabExcessHorizontalSpace = true;
    gridData.heightHint = 100;
    titre.setLayoutData(gridData);
    //[...]
    Merci d'avance.
    Développeuse
    Merci d'expliquer aux autres la solution si vous la trouvez, par respect pour ceux qui prennent le temps de tenter de vous aider !

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 340
    Points : 379
    Points
    379
    Par défaut
    Salut, je programme en SWT depuis quelques temps et je sais pas le faire mais tu peux t'en sortir en créant un Composite qui contient ton Label et en lui attribuant un gestionnaire de mise en forme de type GridLayout.
    Tu associes ensuite un GridData (avec GridData.FILL_VERTICAL en valeur de construction) à ton label auquel tu mets la valeur du champs "verticalAlignement" à "SWT.CENTER".

    C'est comme ça que j'aurai fait.

    A+

  3. #3
    Membre averti Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Points : 391
    Points
    391
    Par défaut
    Merci beaucoup pour ta réponse, je pense que c'est ce que je ferai si je ne trouve pas de solution pour centrer directement dans le label.

    J'espérais pouvoir faire simple en fait, pas trop alourdir la syntaxe pour faire quelque chose qui me paraît basique
    Développeuse
    Merci d'expliquer aux autres la solution si vous la trouvez, par respect pour ceux qui prennent le temps de tenter de vous aider !

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Août 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 218
    Points : 305
    Points
    305
    Par défaut
    Je suis désolé, mais dans ton cas tu as deux solutions :
    a) Tu utilises un composite qui englobe ton label,
    b) Tu écris toi-même un widget "label" qui gère l'alignement vertical.

    La seconde solution me semble la plus simple, en fondant ta réflexion sur le code de CLabel et l'article suivant :
    http://www.eclipse.org/articles/Arti...n%20Widget.htm

    Laurent

  5. #5
    Membre averti Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Points : 391
    Points
    391
    Par défaut
    Ok je vais donc creuser dans ce sens (solution b).

    Développeuse
    Merci d'expliquer aux autres la solution si vous la trouvez, par respect pour ceux qui prennent le temps de tenter de vous aider !

  6. #6
    Membre averti Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Points : 391
    Points
    391
    Par défaut
    Citation Envoyé par soft0613 Voir le message
    Salut, je programme en SWT depuis quelques temps et je sais pas le faire mais tu peux t'en sortir en créant un Composite qui contient ton Label et en lui attribuant un gestionnaire de mise en forme de type GridLayout.
    Tu associes ensuite un GridData (avec GridData.FILL_VERTICAL en valeur de construction) à ton label auquel tu mets la valeur du champs "verticalAlignement" à "SWT.CENTER".
    Bon ben malheureusement, je n'y arrive pas.

    Lorsque je suis tes instructions, tout ce que j'arrive à faire est de centrer le label dans mon shell (verticalement). Or, ce que je souhaite est centrer verticalement à l'intérieur du label. Ce dernier est bien associé à un GridData, le tout dans un GridLayout.

    Soit c'est pas bon, soit je m'y prends mal.

    J'y reviendrai si j'y arrive, car je suis plutôt tenace
    Développeuse
    Merci d'expliquer aux autres la solution si vous la trouvez, par respect pour ceux qui prennent le temps de tenter de vous aider !

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 340
    Points : 379
    Points
    379
    Par défaut
    Non tu dois bien t'y prendre, ma méthode ne center pas le texte dans le label elle centre le label dans le Composite, c'est un genre de substitution pour arriver à tes fins, sinon si tu souhaites vraiment centrer le texte dans le label il faut que tu crés un nouveau widget.

  8. #8
    Membre averti Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Points : 391
    Points
    391
    Par défaut
    C'est bien ce que je craignais

    Merci en tous cas, je ferai ça donc la prochaine fois que le problème se présentera.

    Développeuse
    Merci d'expliquer aux autres la solution si vous la trouvez, par respect pour ceux qui prennent le temps de tenter de vous aider !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 60
    Points : 68
    Points
    68
    Par défaut
    salut,
    juste pour te dire que le fait de centrer un texte dans un label fonctionne de lui-meme:

    Voici le code plutot simple:

    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
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Label;
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.layout.FillLayout;
     
    public class testLabelCenter {
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		Display display=new Display();
    		Shell shell=new Shell(display);
    		shell.setLayout(new FillLayout());
     
    		Label label=new Label(shell, SWT.LEFT);//ou SWT.CENTER ou SWT.RIGTH en fonction des besoins.
    		label.setText("texte centré");
     
    		shell.pack();
    		shell.open();
     
    		while(!shell.isDisposed())
    			if(!display.readAndDispatch())
    				display.sleep();
     
    		display.dispose();
    	}//finMain
    }///:~
    Et les résultats :

    Nom : image1.JPG
Affichages : 312
Taille : 4,1 Ko
    puis en changeant : Nom : image2.JPG
Affichages : 327
Taille : 2,6 Ko...

    et enfin Nom : image3.JPG
Affichages : 316
Taille : 6,9 Ko.

    J'espère que ça réponds à ta préocupation.

  10. #10
    Membre averti Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Points : 391
    Points
    391
    Par défaut
    Oui ça je sais faire, mais relis bien mon premier post ainsi que le titre de ce topic : je parle de centrer VERTICALEMENT dans un label

    Merci quand même ...
    Développeuse
    Merci d'expliquer aux autres la solution si vous la trouvez, par respect pour ceux qui prennent le temps de tenter de vous aider !

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Ayant eu le même besoin, j'ai résolu le problème en utilisant tout simplement un CLabel (inclus dans SWT) au lieu d'un Label classique.

    Voilà.

  12. #12
    Membre averti Avatar de Poulpynette
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 349
    Points : 391
    Points
    391
    Par défaut
    Ok merci bien pour ta réponse, je ne connaissais pas CLabel. Je regarderai donc dans cette direction.

    Développeuse
    Merci d'expliquer aux autres la solution si vous la trouvez, par respect pour ceux qui prennent le temps de tenter de vous aider !

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

Discussions similaires

  1. Centrer verticalement Image+texte dans un <td>
    Par lolymeupy dans le forum Mise en page CSS
    Réponses: 12
    Dernier message: 02/09/2011, 11h28
  2. Problème pour centrer verticalement le texte dans un menu
    Par Greg12345 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 26/05/2010, 20h43
  3. centrer le text dans un label
    Par kacedda dans le forum Windows Forms
    Réponses: 5
    Dernier message: 31/01/2007, 10h13
  4. Centrer verticalement du text dans un dbgrid
    Par pierrot67 dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/06/2006, 14h05
  5. Centrer verticalement un texte dans un Canvas
    Par Ben_Le_Cool dans le forum API, COM et SDKs
    Réponses: 25
    Dernier message: 07/03/2006, 17h54

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