Vous devez définir le paramètre setOpaque(true) sur true, sinon l'arrière-plan ne sera pas peint sur le formulaire. D'après ce que j'ai lu, je pense que s'il n'est pas défini sur true, il peindra une partie ou aucun de ses pixels sur le formulaire. L'arrière-plan est transparent par défaut, ce qui me semble étrange, mais dans le cadre de la programmation, il faut le mettre à true comme indiqué 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
Extrait des 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()