Como definir a cor de fundo de um JLabel?

149

No meu JPanel, defino o plano de fundo de a JLabelpara uma cor diferente. Eu posso ver a palavra "Teste" e é azul, mas o fundo não muda. Como faço para mostrar?

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

Respostas:

311

Usar

label.setOpaque(true);

Caso contrário, o plano de fundo não será pintado, pois o padrão opaqueé falsepara JLabel.

No JavaDocs :

Se verdadeiro, o componente pinta todos os pixels dentro de seus limites. Caso contrário, o componente pode não pintar alguns ou todos os seus pixels, permitindo a exibição dos pixels subjacentes.

Para obter mais informações, leia o Java Tutorial How to Use Labels .

Peter Lang
fonte
39

O plano de fundo JLabel é transparente por padrão. Defina a opacidade como verdadeira assim:

label.setOpaque(true);
Yannick Loriot
fonte
13

Você deve definir o setOpaque (true) como true, caso contrário, o plano de fundo não será pintado no formulário. Penso que, ao ler, se não estiver definido como verdadeiro, ele pintará alguns ou nenhum pixel para o formulário. O plano de fundo é transparente por padrão, o que me parece estranho, pelo menos, mas no modo de programação, você deve configurá-lo como true, como mostrado abaixo.

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

Do 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()

fonte
6

Para o plano de fundo, verifique se você importou java.awt.Colorpara o seu pacote.

No seu mainmétodo, ou seja public static void main(String[] args), chame o método já importado:

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: A configuração opaca afetará sua visibilidade. Lembre-se da distinção entre maiúsculas e minúsculas em Java.

Orji Friday Oko
fonte