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 :

affichage d'un long message dans un jlabel


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut affichage d'un long message dans un jlabel
    Bonjour à tous

    J'ai un problème avec l'affichage des JLabel qui contiennent du long texte, par exemple pour un label qui a 100 pixel de width on peut pas afficher les long message en totalité, pour le texte suivant par exemple:"je suis un label très long" seul ceci s'affiche "je suis un lab ...".

    Je souhaite savoir s'il y'en a un astuce pour afficher le texte en totalité une fois le curseur est pointé sur le jlabel, j'ai essayé avec la fonction l.setToolTipText(l.gettext()) et ca a marché sauf que je souhaite que le message s'affiche en totalité exactement à l'emplacement du JLabel et non pas juste en dessous.

    Si quelqun pourra m'aider ce sera vraiment apprécié, merci d'avance

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut Peut-être...
    Comme on peut pas faire entrer 5 elémphants dans une deux-chevaux, pour afficher votre texte, il n'y a que deux solutions possibles, ou vous réduisez sa taille jusqu'à ce qu'il tienne entièrement affiché, mais ça risque de devenir illisible, et c'est de toute façons à coder sois-même au niveau du mécanisme. Soit scroler lorsque la souris survole le Label.
    Ca à l'air compliqué comme ça, mais pas tant que ça.
    Au lieu d'un simple JLabel magique, un JPanel de la dimensoin voulu pour le JLabel, instancié avec un Layout par défaut (FlowLayout je crois), on met un JTextField (rendu transparant et sans bordure pour que ça ressemble à un JLabel) dans ce JPanel. C'est là qu'est l'astuce, on profite du FlowLayout du JPanel pour laisser le JTextFiel prendre la bonne dimension pour afficher tout le texte, et on relève alors sa taille. Une soustraction plus tard, on sait de combiens de pixels on doit déplacer notre JTexField vers la gauche. On en profite pour récupérer son bounds, et on met le Layout du JPanel à null. Puis, toutes les millisecondes, on déplace le JTextField d'un pixel vers la gauche jusqu'à ce que son extrémité apparaisse. On attends un peu, et on repart dans l'autre sens, etc... jusqu'à ce que la souris sorte du JPanel, auquel cas on remet tout en ordre. Le tout piloté par un Thread évidement pour ce qui est du déplacement.
    C'est vrai que c'est un peu lourd, mais bien écrit et imaginé génériquement, ça devient ré-utilisable à souhait, et au bout du compte, on a son 'JLabel magique'....
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut Re
    Bonjour pursang

    Tout d'abord merci pour ta réponse mais en fait pour que tu comprennes mieux ce que je veux obtenir je vais l'illustrer en image.
    Par exemple sous eclipse lorsqu'on met un point aprés une instance d'un objet quelconque une liste de fonction apparait, et si la declaration d'une des fonctions est très longue vous pouvez voir ce qui se passe dans l'image 1 et c'est exactement ca ce que je veux appliquer à mon jlabel.

    D'autre part lorsque j'ai utiliser la fonction setTooltipText(), j'ai obtenu un résultat pas mal que vous pouvez voir dans ma 2ème image, mais ce que je veux c'est que le message complet s'affiche sur le JLabel comme dans eclipse et non pas juste au dessous.
    Images attachées Images attachées   

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Ce n'est pas très pratique. Il faut redéfinir la méthode JComponent.getToolTipLocation ; voir Setting the Location of a Tool Tip du Java Developers Almanac.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut
    Merci beaucoup gifffftane c'est exactement ce qu'il me faut, t'es le meilleur .

  6. #6
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut
    Re

    Je vais juste ajouter pour ceux qui s'interessent, que je viens de vérifier que la hauteur du ToolTipText est de 18 pixels, donc pour les labels ayant un alignement par defaut cad horizontalement left, et vertivalement center, on peut obtenir le ToolTipText exatement sur le message en utilisant les coordannées suivante ( 0 , (getHeight()-18)/2) et ca fonctionne parfaitement .

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

Discussions similaires

  1. Message dans un JLabel au passage de la souris sur un JButton
    Par thunderfear dans le forum Composants
    Réponses: 1
    Dernier message: 11/06/2010, 17h33
  2. Probleme d'affichage de Message dans un Panel
    Par vorhax dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/04/2007, 21h13
  3. Réponses: 2
    Dernier message: 21/03/2007, 14h36
  4. Problème d 'affichage d une grile dans un JLabel
    Par louby dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 26/06/2006, 15h56
  5. [Exception]Affichage de message dans une Execption
    Par harris_macken dans le forum Général Java
    Réponses: 8
    Dernier message: 29/05/2005, 17h34

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