web-dev-qa-db-fra.com

Comment définir la couleur d'une étiquette (texte coloré) en Java?

Comment définir la couleur du texte d'une étiquette?

myLabel.setText("Text Color: Red");
myLabel.???

Puis-je avoir deux couleurs séparées dans une étiquette?

Par exemple ici:

Le "Text Color:" être noir et le "Red" être rouge.

58
Stefanos Kargas

Sûr. Pour définir la couleur de premier plan, utilisez simplement label.setForeground(Color.RED).

Pour la question à deux couleurs: Vous pouvez par exemple utiliser HTML dans votre texte d'étiquette:

frame.add(new JLabel("<html>Text color: <font color='red'>red</font></html>"));

produit

enter image description here

Une autre solution consiste bien entendu à utiliser deux JLabels distincts, chacun ayant sa couleur de premier plan.

121
aioobe

Vous pouvez définir la couleur d'un JLabel en modifiant la catégorie de premier plan:

JLabel title = new JLabel("I love stackoverflow!", JLabel.CENTER);

title.setForeground(Color.white);

Autant que je sache, le moyen le plus simple de créer l’étiquette bicolore de votre choix est de créer deux étiquettes et de s’assurer qu’elles sont placées côte à côte dans le bon ordre.

54
Raven Dreamer
JLabel label = new JLabel ("Text Color: Red");
label.setForeground (Color.red);

cela devrait marcher

19
Roman
object.setForeground(Color.green);

* n'importe quelle couleur que vous souhaitez * l'objet étant déclaré plus tôt

7

L'un des inconvénients de l'utilisation de HTML pour les étiquettes est qu'il est nécessaire d'écrire un programme localisable (qui devrait fonctionner dans plusieurs langues). Vous aurez des problèmes pour changer uniquement le texte traduisible. Sinon, vous devrez mettre tout le code HTML dans vos traductions, ce qui est très bizarre, je dirais même absurde :)

gui_fr.properties:

title.text=<html>Text color: <font color='red'>red</font></html>

gui_fr.properties:

title.text=<html>Couleur du texte: <font color='red'>rouge</font></html>

gui_ru.properties:

title.text=<html>Цвет текста: <font color='red'>красная</font></html>
3
Honza Zidek

Je voulais juste ajouter à quoi @ aioobe mentionné ci-dessus ...

Dans cette approche, vous utilisez HTML pour colorer votre texte. Bien que ce soit l’un des moyens les plus utilisés pour coder en couleur le texte de l’étiquette, mais n’est pas le moyen le plus efficace de le faire .... étant donné que chaque étiquette mènera au HTML être analysé, rendu, etc. Si vous devez afficher des formulaires d'interface utilisateur volumineux, chaque milliseconde compte pour offrir une bonne expérience utilisateur.

Vous voudrez peut-être passer en revue ci-dessous et l'essayer ....

Jide OSS ( situé àhttps://jide-oss.dev.Java.net/ ) est une bibliothèque open source professionnelle avec une très bonne quantité de composants Swing prêts à être utilisés. Ils ont une version bien améliorée de JLabel nommée StyledLabel. Ce composant résout parfaitement votre problème ... Vérifiez si les licences Open Source s’appliquent ou non à votre produit.

Ce composant est très facile à utiliser. Si vous souhaitez voir une démonstration de leurs composants Swing, vous pouvez exécuter leur démonstration WebStart située à l'adresse www.jidesoft.com ( http://www.jidesoft.com/products/1.4/jide_demo.jnlp ). Toutes leurs offres sont démontrées ... et le meilleur, c'est que le StyledLabel est comparé à JLabel (HTML et sans) en termes de rapidité! :-)

Une capture d'écran du test de performance peut être consultée à l'adresse suivante: ( http://img267.imageshack.us/img267/9113/styledlabelperformance.png )

2
arcamax