Définir la largeur d'un JLabel et ajouter une info-bulle lors du survol
J'ai un JLabel
avec contenu inconnu et j'ai deux choses que je veux faire:
- Je veux mettre un maximum ou peut-être même statique de la largeur de l'étiquette. Et si le texte est plus large que l'étiquette il serait somply raccourcir, comme ceci:
Verylonglabel
devient
Veryl
Est-ce une mauvaise idée d'utiliser statique de la largeur sur les composants gui? Si c'est le cas, quelle est l'alternative? Merci de me donner des conseils!
- Lorsque vous passez la souris sur l'étiquette que je veux une info-bulle avec la pleine longueur de la chaîne à apparaître. Donc, dans notre cas, si j'ai passez la souris sur l'étiquette qui dit "Veryl", une info-bulle affiche "Verylonglabel" apparaît. Il convient toutefois d'afficher une info-bulle avec la pleine longueur de la chaîne, même si elle n'a pas été raccourcie.
Aider avec l'un de ces est grandement apprécié.
Jusqu'à présent, j'ai juste foiré autour un peu et essayé des choses comme ça, sans succès. Il ne semble pas se soucier de la taille.
JLabel label = new JLabel("Verylonglabel");
label.setSize(15, 5);
Cordialement, Goatcat
juste mettre l'étiquette largeur long. si votre contenu de l'étiquette, vous pouvez les diviser. JLabel doivent être capables d'envelopper le contenu.
Il suffit de ne pas appeler
pourriez-vous écrire une réponse à la question où vous nous expliquez ce plus? Je suis très intéressé!
Il suffit de ne pas appeler
setSize()
(ni setPreferredSize()
)pourriez-vous écrire une réponse à la question où vous nous expliquez ce plus? Je suis très intéressé!
OriginalL'auteur Goatcat | 2013-06-26
Vous devez vous connecter pour publier un commentaire.
La taille de votre
JLabel
est déterminé par leLayoutManager
du conteneur parent. Consulter le tutoriel pour plus d'informations.Noter que le
JLabel
a déjà le comportement que vous êtes à la recherche poursetToolTipText
méthode pour spécifier l'info-bulle, qui sera affiché lors du survol de laJLabel
votre
LayoutManager
décide. VotreJLabel
décide de ce que sa taille par défaut est basé sur le texte. Toutefois, cela dépend de laLayoutManager
s'il respecte le fait que la taille préférée ou pasOriginalL'auteur Robin
C'est ce que vous avez besoin de:
.setPreferredSize()
. Qu'avez-vous à dire sur le sujet? Quand est-il sécuritaire d'utiliser et quand doit-il être évité?Voir question
Il est généralement préférable d'éviter d'utiliser setPreferredSize parce que votre composant d'interface graphique ne change pas la taille lors de la fenêtre change de taille, comme lorsque l'utilisateur agrandit la fenêtre.
et Gilbert Le Blanc, je vous remercie très beaucoup pour votre aide!
OriginalL'auteur ColinWa
setMaximumSize
ne sera efficace que si leLayoutManager
vous utilisez les honneurs des composants souhaités/max tailles. Vous voudrez peut-être vérifierBoxLayout
comme unLayoutManager
. Contrairement à plusieurs autres Swing LayoutManagers,BoxLayout
honneurs le réglage de la taille de ses composants.Cela laisse tout de même vous la question de savoir quelle taille pour définir la taille maximale. La largeur peut être ce que vous êtes sur le ciblage de votre valeur fixe, mais la hauteur doit être assez grand pour quelle que soit la police est en train d'être utilisé. Voici le code que j'ai utiliser pour faire de la hauteur de la souplesse, mais la largeur fixée à 50 pixels:
Enfin, l'info-bulle montrer l'étiquette complète le texte avec une ligne comme:
OriginalL'auteur Josh Britton