Cum se stabilește culoarea unei etichete (text colorat) în Java? (Programare, Java, Text, Culori, Etichetă, Fonturi)

Stefanos Kargas a intrebat.

Cum se setează culoarea textului unei etichete?

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

Pot avea două culori separate într-o singură etichetă?

De exemplu, aici:

The "Text Color:" să fie negru, iar "Red" să fie roșu.

6 răspunsuri
aioobe

Pentru o singură culoare de prim-plan

label.setForeground(Color.RED)

Pentru mai multe culori de prim-plan în aceeași etichetă:

(probabil că aș pune două etichete una lângă alta folosind un GridLayout sau ceva de genul ăsta, dar uite cum facem…)

Ați putea folosi html în textul etichetei, după cum urmează:

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

care produce:

Raven Dreamer

Puteți seta culoarea unui JLabel prin modificarea categoriei de prim-plan:

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

title.setForeground(Color.white);

Din câte știu eu, cel mai simplu mod de a crea eticheta cu două culori pe care o doriți este să faceți pur și simplu două etichete și să vă asigurați că sunt plasate una lângă cealaltă în ordinea corectă.

Roman
JLabel label = new JLabel ("Text Color: Red");
label.setForeground (Color.red);

acest lucru ar trebui să funcționeze

Wazim, băiatul ANDROID
object.setForeground(Color.green);

*câte culori doriți*obiectul fiind declarat mai devreme

Comentarii

  • nu este greșit – dar nimic nou față de răspunsurile anterioare 🙂 –  > Por kleopatra.
Honza Zidek

Unul dintre dezavantajele utilizării HTML pentru etichete este atunci când trebuie să scrieți un program localizabil (care ar trebui să funcționeze în mai multe limbi). Veți avea probleme pentru a schimba doar textul traductibil. Sau va trebui să puneți întregul cod HTML în traducerile dumneavoastră, ceea ce este foarte ciudat, aș spune chiar absurd 🙂

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>

arcamax

Am vrut doar să adaug la ceea ce @aioobe a menționat mai sus…

În această abordare folosiți HTML pentru a codifica textul în culori. Deși aceasta este una dintre cele mai frecvent utilizate modalități de a codifica în culori textul etichetei, dar nu este cel mai eficient mod de a face acest lucru.…., având în vedere faptul că fiecare etichetă va duce la analizarea, redarea, etc., a textului HTML. Dacă aveți formulare UI mari de afișat, fiecare milisecundă contează pentru a oferi o experiență bună utilizatorului.

Poate doriți să parcurgeți cele de mai jos și să încercați….

Jide OSS (localizat la https://jide-oss.dev.java.net/) este o bibliotecă profesională open source cu o cantitate foarte bună de componente Swing gata de utilizare. Ei au o versiune mult îmbunătățită a JLabel numită StyledLabel. Această componentă rezolvă problema dvs. perfect… Vedeți dacă licența lor open source se aplică produsului dvs. sau nu.

Această componentă este foarte ușor de utilizat. Dacă doriți să vedeți o demonstrație a componentelor lor Swing, puteți rula demonstrația WebStart, care se află la adresa www.jidesoft.com (http://www.jidesoft.com/products/1.4/jide_demo.jnlp). Toate ofertele lor sunt demonstrate… și cea mai bună parte este că StyledLabel este comparat cu JLabel (HTML și fără) în ceea ce privește viteza! 🙂

O captură de ecran a testului de performanță poate fi văzută la (http://img267.imageshack.us/img267/9113/styledlabelperformance.png)