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 :

[JLabel] getWidth()


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Par défaut [JLabel] getWidth()
    J'instancie un label avec un texte formatté au format HTML, ensuite je le place sur mon panneau, seulement sa position dépend des valeurs renvoyées par les méthodes getWidth() et getHeight().
    Le problème est que tant que je n'ai pas affiché le label il ne peut me renvoyer ces deux valeurs correctement?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    JLabel label = new JLabel();
    label.setText("<html> Mon texte </html>");
    int longueur = label.getWidht();
    //ensuite seulement j'afficherai mon label
    ...
    Comment récupérer une valeur juste ?

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2002
    Messages : 125
    Par défaut
    envisage d'utiliser un layout adapté a ton besoin.

  3. #3
    Membre émérite
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Par défaut
    Ce n'est pas une question de layout, en fait le Label s'insère dans une popup qui s'affiche à l'aide d'un clic droit, seulement il se peut qu'en fonction de la position de la souris la popup déborde de l'ecran. Donc j'observe en permanence la position souris plus la taille de la popup qui est en fait la taille du label et de son texte pour détecter un éventuel débordement.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Tu ne peux utiliser getWidth(), car c'est le LayoutManager qui lui donne sa taille, en fonction de ses contraintes. Par contre, tu dois pouvoir utiliser le getPreferredSize() de ton label.

  5. #5
    Membre émérite
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Par défaut
    J'avais pensé à le prédessiner dans une espèce de buffered image ?
    Sinon comment faites vous pour afficher une popup à l'endroit d'un clic de souris en gérant les débordements de l'écran.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Si tu fais ces commandes dans cet ordre-là, ça marche pas ?
    1. tu construits ta fenêtre (en placant tes composants)
    2. tu fais un pack() sur ta fenêtre
    3. tu calcules la position de ta fenêtre en fonction de sa taille
    4. tu fais setVisible(true)

    Sinon comment faites vous pour afficher une popup à l'endroit d'un clic de souris en gérant les débordements de l'écran.
    Je peux pas te dire, j'ai jamais eu besoin de faire ça, désolé.

  7. #7
    Membre émérite
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Par défaut
    Désolé mais la popup est n'est pas un composant comme les autres, ce n'est pas vraiment une fenêtre et il ne posède pas de méthode à part show et hide
    API: Popup does not descend from Component

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Oups, autant pour moi !! Mais ça ne change pas vraiment le problème. La popup se dimensione certainement par rapport à la preferredSize de ton composant "contents". donc un getPreferredSize sur ton composant devrait suffir pour savoir la taille que va prendre la popup.

  9. #9
    Membre émérite
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Par défaut
    Le getPreferredSize() n'est pas une solution acceptable, puisque que je ne connais pas à l'avance la taille du texte, ce clic droit existe pratiquement partout, il doit bien y avoir une manière propre de gérer le problème...

  10. #10
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    la solution (basique) consiste à calculer si ta souris est plutot à gauche ou à droite de l'écran et de faire apparaître ton popup franchement à gauche ou franchement à droite de la souris.

    Et est-ce que tu ne peux pas le placer, le remplir avec le texte tout en le laissant invisible, puis récupérer sa largeur (même invisible il en a une normalement), le replacer correctement et là le rendre visible ?

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Le getPreferredSize() n'est pas une solution acceptable, puisque que je ne connais pas à l'avance la taille du texte
    Mais le getPreferredSize() te donne justement la taille de ton label en fonction du texte. Essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JLabel monLabel = new JLabel(monTexte);
    Dimension d = monLabel.getPreferredSize();
    Et tu auras la taille de ton JLabel, calculée en fonction du texte qu'il contient. C'est ce que tu veux, non ? Je vois pas ce qui te gêne...

  12. #12
    Membre émérite
    Avatar de c-top
    Profil pro
    Turu
    Inscrit en
    Septembre 2003
    Messages
    972
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Turu

    Informations forums :
    Inscription : Septembre 2003
    Messages : 972
    Par défaut
    Ok, dialogue de sourd (mea culpa)
    Bon bah euh enfin quoi c'est humain non?

  13. #13
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    L'important c'est que ce soit résolu ...

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

Discussions similaires

  1. [Look and feel] Texte des JLabels en gras
    Par aliasjcdenton dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 26/01/2006, 11h49
  2. [Image]getWidth toujours egale a -1
    Par miel_pops dans le forum 2D
    Réponses: 4
    Dernier message: 27/06/2004, 21h05
  3. [thread] Rafraichissement JLabel
    Par astyanax34 dans le forum Composants
    Réponses: 14
    Dernier message: 24/06/2004, 15h44
  4. [JLabel] Redimensionnement auto non désiré
    Par SamRay1024 dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 21/05/2004, 18h13
  5. [JLabel][HTML]pourquoi mes images s'affiche pas?!
    Par La Truffe dans le forum Composants
    Réponses: 8
    Dernier message: 29/04/2004, 11h23

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