Как установить цвет фона JLabel?

В моем JPanel я устанавливаю фон JLabel на другой цвет. Я вижу слово "Тест", и оно синее, но фон вообще не меняется. Как я могу его показать?

this.setBackground(Color.white);
JLabel label = new JLabel("Test");
label.setForeground(Color.blue);
label.setBackground(Color.lightGray);
this.add(label);

Ответ 1

Использование

label.setOpaque(true);

В противном случае фон не будет окрашен, так как по умолчанию opaque есть false для JLabel.

Из JavaDocs:

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

Для получения дополнительной информации прочитайте учебник по Java Как использовать ярлыки.

Ответ 2

Фон JLabel по умолчанию прозрачен. Установите непрозрачность как true:

label.setOpaque(true);

Ответ 3

Вы должны установить для setOpaque (true) значение true, иначе фон не будет окрашен в форму. Я думаю, что прочитав это, если он не установлен в true, он будет рисовать некоторые или не любые его пиксели в форме. Фон по умолчанию прозрачен, что кажется мне странным, по крайней мере, но по пути программирования вы должны установить его в true, как показано ниже.

      JLabel lb = new JLabel("Test");
      lb.setBackground(Color.red);
      lb.setOpaque(true); <--This line of code must be set to true or otherwise the 

Из JavaDocs

setOpaque

public void setOpaque(boolean isOpaque)
  If true the component paints every pixel within its bounds. Otherwise, 
  the component may not paint some or all of its pixels, allowing the underlying 
  pixels to show through.
  The default value of this property is false for JComponent. However, 
  the default value for this property on most standard JComponent subclasses 
   (such as JButton and JTree) is look-and-feel dependent.

Parameters:
isOpaque - true if this component should be opaque
See Also:
isOpaque()

Ответ 4

Для фона убедитесь, что вы импортировали java.awt.Color в свой пакет.

В вашем методе main, т.е. public static void main(String[] args), вызовите уже импортированный метод:

JLabel name_of_your_label=new JLabel("the title of your label");
name_of_your_label.setBackground(Color.the_color_you_wish);
name_of_your_label.setOpaque(true);

Примечание. Установка непрозрачности повлияет на ее видимость. Помните чувствительность к регистру в Java.