risposta-alla-domanda-sullo-sviluppo-web-bd.com

Come posso impostare il colore di un'etichetta (testo colorato) in Java?

Come posso impostare il colore del testo di un'etichetta?

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

Posso avere due colori separati in un'etichetta?

Per esempio qui:

Il "Text Color:" per essere nero e il "Red" essere rosso.

58
Stefanos Kargas

Sicuro. Per impostare il colore di primo piano, è sufficiente utilizzare label.setForeground(Color.RED).

Per la domanda a due colori: potresti ad esempio usare html nel testo dell'etichetta:

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

produce

enter image description here

Un'altra soluzione è ovviamente quella di utilizzare due JLabel separati, ognuno dei quali ha il suo colore di primo piano.

121
aioobe

È possibile impostare il colore di una JLabel modificando la categoria di primo piano:

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

title.setForeground(Color.white);

Per quanto ne so, il modo più semplice per creare l'etichetta bicolore desiderata è semplicemente creare due etichette e assicurarsi che vengano posizionate una accanto all'altra nell'ordine corretto.

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

questo dovrebbe funzionare

19
Roman
object.setForeground(Color.green);

* qualsiasi colore desiderato * oggetto dichiarato in precedenza

7

Uno degli svantaggi dell'utilizzo dell'HTML per le etichette è quando è necessario scrivere un programma localizzabile (che dovrebbe funzionare in diverse lingue). Avrai problemi a cambiare solo il testo traducibile. Oppure dovrai inserire l'intero codice HTML nelle tue traduzioni, il che è molto imbarazzante, direi persino assurdo :)

gui_en.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

Volevo solo aggiungere ciò che @ aioobe menzionato sopra ...

In questo approccio usi l'HTML per colorare il tuo testo. Sebbene questo sia uno dei modi più frequentemente utilizzati per codificare il testo dell'etichetta con il colore, ma non è il modo più efficiente per farlo .... considerando che ogni etichetta porterà all'HTML in fase di analisi, rendering, ecc. Se si devono visualizzare moduli UI di grandi dimensioni, ogni millisecondo conta per offrire una buona esperienza utente.

Potresti voler passare attraverso il seguito e provarlo ....

Jide OSS ( ubicato ahttps://jide-oss.dev.Java.net/ ) è una libreria open source professionale con una buona quantità di componenti Swing pronti per l'uso. Hanno una versione molto migliorata di JLabel chiamata StyledLabel. Quel componente risolve perfettamente il tuo problema ... Vedi se la loro licenza open source si applica al tuo prodotto o no.

Questo componente è molto facile da usare. Se vuoi vedere una demo dei loro componenti Swing puoi eseguire la loro demo WebStart che si trova in www.jidesoft.com ( http://www.jidesoft.com/products/1.4/jide_demo.jnlp ). Tutte le loro offerte sono dimostrate ... e la parte migliore è che la StyledLabel è confrontata con JLabel (HTML e senza) in termini di velocità! :-)

Uno screenshot del perf test può essere visto su ( http://img267.imageshack.us/img267/9113/styledlabelperformance.png )

2
arcamax