Как установить цвет метки (цветной текст) в Java? - PullRequest
58 голосов
/ 03 июня 2010

Как установить цвет текста надписи?

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

Могу ли я иметь два отдельных цвета на одной этикетке?

Например, здесь:

"Text Color:" должно быть черным, а "Red" - красным.

Ответы [ 6 ]

120 голосов
/ 03 июня 2010

Конечно. Чтобы установить цвет переднего плана, просто используйте label.setForeground(Color.RED).

Для двухцветного вопроса : Вы можете, например, использовать html в тексте метки:

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

производит

enter image description here

Другое решение, конечно, заключается в использовании двух отдельных JLabels, каждый из которых имеет свой основной цвет.

51 голосов
/ 03 июня 2010

Вы можете установить цвет JLabel, изменив категорию переднего плана:

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

title.setForeground(Color.white);

Насколько я знаю, самый простой способ создать желаемую двухцветную метку - это просто сделать две метки и убедиться, что они расположены рядом друг с другом в правильном порядке.

19 голосов
/ 03 июня 2010
JLabel label = new JLabel ("Text Color: Red");
label.setForeground (Color.red);

это должно работать

7 голосов
/ 22 марта 2012
object.setForeground(Color.green);

* любой цвет, который вы хотите * объект, объявленный ранее

3 голосов
/ 17 ноября 2013

Одним из недостатков использования HTML для меток является необходимость писать локализуемую программу (которая должна работать на нескольких языках). У вас будут проблемы, чтобы изменить только переводимый текст. Или вам придется поместить весь HTML-код в ваши переводы, что очень неловко, я бы даже сказал абсурдно

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>
2 голосов
/ 03 июня 2010

Просто хотел добавить к тому, что @ aioobe упомянуто выше ...

При таком подходе вы используете HTML для цветовой кодировки вашего текста. Хотя это один из наиболее часто используемых способов цветной маркировки текста метки, , но не самый эффективный способ сделать это .... учитывая тот факт, что каждая метка приведет к анализу HTML, рендеринг и т. д. Если у вас отображаются большие формы пользовательского интерфейса, каждая миллисекунда имеет значение, чтобы обеспечить хороший пользовательский опыт.

Возможно, вы захотите пройти ниже и попробовать ...

Jide OSS (, расположенный по адресу https://jide -oss.dev.java.net / ) - профессиональная библиотека с открытым исходным кодом с действительно хорошим количеством готовых к использованию компонентов Swing. У них есть значительно улучшенная версия JLabel под названием StyledLabel. Этот компонент прекрасно решает вашу проблему ... Посмотрите, применимо ли их лицензирование с открытым исходным кодом к вашему продукту.

Этот компонент очень прост в использовании. Если вы хотите увидеть демонстрацию их компонентов Swing, вы можете запустить их демонстрацию WebStart, расположенную по адресу www.jidesoft.com (http://www.jidesoft.com/products/1.4/jide_demo.jnlp). Все их предложения являются демонстрационными ... и лучше всего Часть заключается в том, что StyledLabel сравнивается с JLabel (HTML и без) по скорости!: -)

Скриншот теста производительности можно увидеть в (http://img267.imageshack.us/img267/9113/styledlabelperformance.png)

...