2010-03-04 10 views
130

Nel mio JPanel, ho impostato lo sfondo di un JLabel in un altro colore. Riesco a vedere la parola "Test" ed è blu, ma lo sfondo non cambia affatto. Come posso farlo mostrare?Come si imposta il colore di sfondo di una marca JLabel?

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

risposta

264

Usa

label.setOpaque(true); 

In caso contrario, lo sfondo non è dipinta, dal momento che il valore predefinito di opaque è false per JLabel.

Dal JavaDocs:

Se fosse vero il componente dipinge ogni pixel all'interno dei suoi confini. In caso contrario, il componente potrebbe non dipingere alcuni o tutti i suoi pixel, consentendo la visualizzazione dei pixel sottostanti.

Per ulteriori informazioni, consultare il Java Tutorial How to Use Labels.

+0

+1 label.setOpaque (true); – bizzr3

38

Lo sfondo di JLabel è trasparente per impostazione predefinita. Impostare l'opacità al vero così:

label.setOpaque(true); 
3

per lo sfondo, assicurarsi di aver importato java.awt.Color nel pacchetto.

nel metodo main, vale a dire public static void main(String[] args), chiamare 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: Impostazione opaca influenzerà la sua visibilità. Ricorda la case-sensitive in Java.

11

È necessario impostare setOpaque (true) su true altrimenti lo sfondo non verrà dipinto sul modulo. Penso che dalla lettura che se non è impostato su true che dipingerà alcuni o meno i suoi pixel nella forma. Lo sfondo è trasparente di default, il che mi sembra strano, ma in termini di 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 

Dalle 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() 
Problemi correlati