Comment modifier la taille de la police d'un JLabel pour prendre la taille maximale
J'ai un JLabel
dans un Récipient.
Le defaut de la taille de la police est très petite.
Je voudrais que le texte de la JLabel
de prendre la taille maximale.
Comment puis-je le faire?
- votre question n'a pas beaucoup de sens. Voulez-vous la taille horizontale ou à la verticale de la taille de la JLabel taille (ou les deux)? N'est ce besoin d'être automatisé: c'est, si vous décidez de faire votre JLabel, disons, plus large, si la police automatiquement grandir? Pourquoi voulez-vous faire? Il est rare qu'une demande.
- Que voulez-vous atteindre? preuve d'une grande Police de caractère ? ou re taille de la police par la taille des composants?
- Mon Conteneur juste avoir un seul élément : le JLabel. Par defaut le jlabel prendre toute la place. Cependant, la taille de la police est très petite. Je voudrais que la taille de la police sera maximale, afin d'avoir le moins de "blanc" possible. @porteur d'anneau, je veux avoir le plus possible de Police pour cette Jlabel j'espère que vous avez compris ce que j'ai tenté d'expliquer 🙂
- si la police de croissance automatique : Oui exactement ce que je veux. Je fais cela parce que ma demande est pour les handicapés
- La question prend tout son sens. Je l'emploie ici: stackoverflow.com/a/4437998/11236
Vous devez vous connecter pour publier un commentaire.
Pas le plus joli code, mais la suite va choisir une taille de police appropriée pour un
JLabel
appelélabel
tels que le texte à l'intérieur, sera adapté à l'intérieur autant que possible sans faire déborder le label:Fondamentalement, le code ressemble à combien d'espace le texte dans le
JLabel
prend place à l'aide de laFontMetrics
objet, et utilise ensuite cette information pour déterminer la plus grande taille qui peuvent être utilisés sans faire déborder le texte de laJLabel
.Le code ci-dessus peut être inséré dans peut-être la
paint
méthode de laJFrame
qui détient leJLabel
, ou une méthode qui sera invoquée lorsque la taille de la police doit être changé.Voici une capture d'écran du code ci-dessus dans l'action:
le texte d'alt http://coobird.net/img/growing-text.png
prises de Comment Utiliser le HTML dans les Composants Swing
Code Source pour le Label Comment changer la Couleur et la Police (dans Netbeans)
Voulais juste faire remarquer que l'on a accepté de répondre a quelques limitations (que j'ai découvert quand j'ai essayé de l'utiliser)
Il n'est donc pas adapté (sans adaptation) pour une utilisation dans les répétée du paramètre d'appel (par exemple, un
ComponentResizedListener
ou personnalisé modifiés/LayoutManager
).La liste de code de manière efficace suppose un point de départ de la taille 10 pt, mais se rapporte à la taille de la police actuelle et est donc adapté pour appeler une fois (pour définir la taille de la police lors de l'étiquette est créée). Il serait mieux travailler dans un environnement multi-appel de l'environnement si elle n'a
int newFontSize = (int) (widthRatio * 10);
plutôt queint newFontSize = (int)(labelFont.getSize() * widthRatio);
Car il utilise
new Font(labelFont.getName(), Font.PLAIN, fontSizeToUse))
pour générer la nouvelle police, il n'y a pas de support pour les caractères Gras, en Italique ou en Couleur, etc à partir de l'original de la police dans la mise à jour de la police. Il serait plus flexible si elle fait usage delabelFont.deriveFont
à la place.La solution ne fournit pas de support pour HTML le Texte de l'étiquette. (Je sais que c'est probablement pas toujours un résultat escompté de la réponse de code offert, mais comme j'ai eu l'HTML en texte
JLabel
sur monJPanel
j'ai officiellement découvert la limitation. LeFontMetrics.stringWidth()
calcule la longueur du texte que inclusive de la largeur des balises html - à-dire comme un tout simplement plus de texte)Je recommande à la recherche de la réponse à cette SORTE de question où trashgod de la réponse à un certain nombre de réponses différentes (y compris celui-ci) à peu près la même question. Sur cette page je vais vous donner une réponse supplémentaire, qui accélère l'un de l'autre répond par un facteur de 30 à 100.