2010-11-13 32 views
11

Voici le code qui crée 9 boutons sous forme de grille sur un panneau spécifique3. Ce que je veux, c'est rendre l'arrière-plan de chaque bouton noir avec du texte gris dessus. Quelqu'un peut-il vous aider s'il vous plaît?Comment définir la couleur d'arrière-plan d'un bouton dans l'interface graphique Java?

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

Honnêtement, les gens, utiliser un IDE. L'auto-complétion est l'un des meilleurs moyens d'apprendre la bibliothèque de langues, et les noms de méthodes sont généralement assez explicites. –

+0

@DenisTulskiy pourquoi votre commentaire était-il nécessaire? – Ungeheuer

+0

@JohnnyCoder, je suppose que j'étais frustré et c'était ma façon de dire rtfm. Je crois toujours que c'est un bon conseil, cependant :) –

Répondre

16

Consultez la documentation JButton. Porter 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); 
} 
+8

Cela ne fonctionne pas avec Java 8 sur Mac. La couleur d'arrière-plan est la couleur derrière le bouton. Le bouton est ensuite dessiné sur le fond noir et le bouton est gris avec du texte gris. (vous ne pouvez pas lire le texte). En fait, c'est pire ... l'arrière-plan noir n'est pas dessiné du tout sauf si 'setOpaque (true)' est appelé en premier. – Jason

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

Utilisez la méthode setBackground pour définir l'arrière-plan et setForeground pour changer la couleur de votre texte. Notez cependant que mettre du texte gris sur un fond noir peut rendre votre texte un peu difficile à lire.

2

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

0

Il semble que la méthode setBackground() ne fonctionne pas bien sur certaines plateformes (j'utilise Windows 7). J'ai trouvé this answer à this 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.

11

simple:

btn.setBackground(Color.red);

Pour utiliser les valeurs RVB:

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

+1

J'aime utiliser btn.setBackground (New Color (int, int, int)); pour les valeurs RVB –

1

modification de la propriété d'arrière-plan peut-être pas assez que le composant ne ressemblera pas à un bouton plus. Vous devrez peut-être ré-implémenter la méthode de peinture à here pour obtenir un meilleur résultat:

enter image description here