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


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

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

4 ответа:

Использовать

label.setOpaque(true);

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

Из JavaDocs :

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

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

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

label.setOpaque(true);

Вы должны установить 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()

Для фона убедитесь, что вы импортировали 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);

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