web-dev-qa-db-fra.com

Comment définir la couleur de fond d'un bouton dans l'interface graphique Java?

Ci-dessous, le code qui crée 9 boutons sous la forme gridlayout sur un panneau spécifique3. Ce que je veux, c'est que l'arrière-plan de chaque bouton soit noir avec du texte gris dessus. Quelqu'un peut-il aider s'il vous plaît?

 for(int i=1;i<=9;i++)
 {
     p3.add(new JButton(""+i));
 }
15
Salar

Consultez JButton documentation. Portez une attention particulière aux méthodes setBackground et setForeground héritées de JComponent.

Quelque chose comme:

for(int i=1;i<=9;i++)
{
    JButton btn = new JButton(String.valueOf(i));
    btn.setBackground(Color.BLACK);
    btn.setForeground(Color.GRAY);
    p3.add(btn);
}
20
Pablo Santa Cruz

Simple:

btn.setBackground(Color.red);

Pour utiliser les valeurs RVB:

btn[i].setBackground(Color.RGBtoHSB(int, int, int, float[]));

11
Ali Mohammadi
for(int i=1;i<=9;i++) {
    p3.add(new JButton(""+i) {{
        // initialize the JButton directly
        setBackground(Color.BLACK);
        setForeground(Color.GRAY);
    }});
}
3
dacwe

Changer la propriété de fond peut ne pas être suffisant car le composant ne ressemblera plus à un bouton. Vous devrez peut-être ré-implémenter la méthode Paint comme dans ici pour obtenir un meilleur résultat:

enter image description here

2
luca

Vous pouvez ou non utiliser la méthode setOpaque pour vous assurer que les couleurs s'affichent en passant à true pour la méthode.

2
Tanner

Utilisez la méthode setBackground pour définir le fond et setForeground pour changer la couleur de votre texte. Notez toutefois que placer du texte gris sur un fond noir peut rendre votre texte un peu difficile à lire.

1
npinti

Il semble que la méthode setBackground () ne fonctionne pas bien sur certaines plates-formes (j'utilise Windows 7). J'ai trouvé cette réponse à cette question utile. Cependant, je ne l'ai pas entièrement utilisé pour résoudre mon problème. Au lieu de cela, j'ai décidé qu'il serait beaucoup plus facile et presque aussi esthétique de colorer un panneau à côté du bouton.

0
GregNash