Come posso impostare il colore di sfondo di JLabel?


149

Nel mio JPanel, ho impostato lo sfondo di un JLabelcolore diverso. Vedo la parola "Test" ed è blu, ma lo sfondo non cambia affatto. Come posso farlo mostrare?

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

Risposte:


312

Uso

label.setOpaque(true);

In caso contrario, lo sfondo non viene dipinto, poiché l'impostazione predefinita opaqueè falseper JLabel.

Da JavaDocs :

Se vero, il componente dipinge ogni pixel entro i suoi limiti. Altrimenti, il componente potrebbe non dipingere alcuni o tutti i suoi pixel, consentendo ai pixel sottostanti di passare attraverso.

Per ulteriori informazioni, leggi il tutorial Java Come usare le etichette .


39

Lo sfondo JLabel è trasparente per impostazione predefinita. Imposta l'opacità su true in questo modo:

label.setOpaque(true);

13

È necessario impostare setOpaque (true) su true, altrimenti lo sfondo non verrà dipinto nel modulo. Penso dalla lettura che se non è impostato su true, disegnerà alcuni dei suoi pixel nella forma. Lo sfondo è trasparente per impostazione predefinita, il che mi sembra strano, ma per quanto riguarda la programmazione devi impostarlo su true come mostrato di seguito.

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

Da 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

Per lo sfondo, assicurati di aver importato java.awt.Colornel tuo pacchetto.

Nel tuo mainmetodo, ad esempio public static void main(String[] args), chiama il metodo già importato:

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: L'impostazione dell'opaco influirà sulla sua visibilità. Ricorda la distinzione tra maiuscole e minuscole in Java.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.