2010-03-04 4 views
130

Dans mon JPanel, je définis l'arrière-plan d'un JLabel à une couleur différente. Je peux voir le mot "Test" et c'est bleu, mais le fond ne change pas du tout. Comment puis-je le montrer?Comment définir la couleur d'arrière-plan d'un JLabel?

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

Répondre

264

Utilisez

label.setOpaque(true); 

Sinon, le fond n'est pas peint, puisque la valeur par défaut est opaquefalse pour JLabel.

De l'JavaDocs:

Si cela est vrai composant peint chaque pixel dans ses limites. Sinon, il se peut que le composant ne peigne pas tout ou partie de ses pixels, permettant aux pixels sous-jacents d'apparaître.

Pour plus d'informations, consultez le tutoriel Java How to Use Labels.

+0

+1 label.setOpaque (true); – bizzr3

38

L'arrière-plan JLabel est transparent par défaut. Réglez l'opacité à vrai comme ça:

label.setOpaque(true); 
3

Pour l'arrière-plan, assurez-vous que vous avez importé java.awt.Color dans votre package.

Dans votre méthode main, à savoir public static void main(String[] args), appelez la méthode déjà importé:

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: Réglage opaque aura une incidence sur sa visibilité. Rappelez-vous la sensibilité à la casse en Java.

11

Vous devez définir setOpaque (true) sur true sinon l'arrière-plan ne sera pas peint dans le formulaire. Je pense à partir de la lecture que si elle n'est pas définie à vrai qu'elle va peindre certains ou aucun de ses pixels à la forme. L'arrière plan est transparent par défaut ce qui me semble au moins bizarre mais au niveau de la programmation il faut le mettre à vrai comme montré ci-dessous.

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

De l'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()