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

149

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

this.setBackground(Color.white);
JLabel label = new JLabel("Test");
label.setForeground(Color.blue);
label.setBackground(Color.lightGray);
this.add(label);
Остров каталина
источник

Ответы:

312

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

label.setOpaque(true);

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

Из JavaDocs :

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

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

Питер Лэнг
источник
39

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

label.setOpaque(true);
Янник Лорио
источник
13

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

источник
6

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

Орджи Пятница Око
источник