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

Composants Java Discussion :

[Débutant][JLabel] Connaître la taille du texte


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Par défaut [Débutant][JLabel] Connaître la taille du texte
    Bonjour,

    Je tente de mettre en forme une interface graphique. Les différents Layout que j'ai utilisé ne me donnent pas satisfaction. J'ai donc décidé de définir les tailles et positons des divers éléments moi-même.

    Pour ce faire, j'ai besoin de connaître la taille (en pixel de préférence) d'un texte (qui peut être changé dans un fichier de configuration) pour qu'il ne soit pas tronqué par la taille du JLabel que j'utilise.

    Pendant mes essais, je peux évidement trouver la bonne taille par essais-erreurs. Mais dès que le texte change, ça marche moins bien s'il devient plus long.

    Donc, existe t-il un moyen quelconque de connaître la taille d'un JLabel tel que le texte soit visible dans son entier, ni plus, ni moins.

    Merci

  2. #2
    Membre actif
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    label.getFontMetrics(label.getFont()).getStringBounds(string, graphics);
    string : la chaine de caractere dont tu veux savoir la largeur
    graphics : le Graphics qui rendera le JLabel

  3. #3
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     mon_label.getFontMetrics(mon_label.getFont()).stringWidth(ma_string);
    ce code retourne la taille en pixel de la chaine ma_string

    PS:
    si tu veux aussi la taille en hauteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    mon_label.getFontMetrics(mon_label.getFont()).getHeight();

  4. #4
    Membre actif
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Par défaut
    oui mais si tu regardes la javaDoc de cette methode (stringWidth)
    Note that the total advance width returned from this method does not take into account the rendering context. Therefore, the anti-aliasing and fractional metrics hints can affect the value of the advance. When enabling the anti-aliasing and fractional metrics hints, use getStringBounds(String, Graphics) instead of this method. The advance of a String is not necessarily the sum of the advances of its characters.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Par défaut
    Citation Envoyé par rootel77
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    label.getFontMetrics(label.getFont()).getStringBounds(string, graphics);
    string : la chaine de caractere dont tu veux savoir la largeur
    graphics : le Graphics qui rendera le JLabel
    Merci, ça a l'air tip-top ce que je cherche (stringwidth est pas mal aussi).
    Mais j'ai un peu de mal à définir l'objet graphics du deuxième argument. En fait, je n'en vois pas du tout

    Mon code ressemble à ça (épuré de ce qui ne concerne pas ma question) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private JPanel bidule() {
        JPanel p = new JPanel();
        JLabel truc = new JLabel(mon_texte);
        truc.setBounds(ce_que_je_cherche_pour_que_ça_marche);
        p.add(truc);
     
        return p;
    }
    J'ajoute mon bidule() dans un JTabbedPane qui est contenu dans un JFrame (pour info.).

    Où trouve je un objet graphics là dedans ?
    Désolé si la question paraît bête, je débute (Puis, les seules questions bêtes sont celles qu'on pose pas)

  6. #6
    Membre actif
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Par défaut
    tu peux faire label.getGraphics();

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Par défaut
    Citation Envoyé par rootel77
    tu peux faire label.getGraphics();
    Moui, bon, sur ce coup, j'aurais dû le trouver tout seul
    Mais j'ai eu beau réfléchir, c'est pas venu

    Merci, ça fonctionne impec.

    Si quelqu'un peut m'expliquer à quoi sert l'objet graphics dans cette histoire, je serais comblé. Si pas, problème résolu

  8. #8
    Membre actif
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Par défaut
    l'objet graphics sert à définir les propriétés de dessin, il contient entre autres les info. de la resolution, les effets comme l'anti-aliasing, le scale etc...; la largeur d'un string est dependante non seulement de la police mais aussi de toutes les proproétés précitées, donc de l'objet Graphics

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Par défaut
    Pour faire court : merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/03/2010, 13h12
  2. Réponses: 13
    Dernier message: 22/01/2008, 16h25
  3. Réponses: 2
    Dernier message: 15/09/2005, 00h11
  4. [debutant][JLabel] Taille du texte
    Par GroRelou dans le forum Composants
    Réponses: 2
    Dernier message: 06/06/2005, 16h26
  5. taille du texte dans un viewport
    Par pitounette dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/07/2002, 13h06

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