2009-12-03 4 views
11

Quel est le moyen le plus simple pour faire un JButton afficher seulement la couleur de fond? Je n'ai pas besoin d'autres effets comme les bordures, l'aspect 3D ou le surlignement.Comment faire de JButton avec un style plat simple?

Merci d'avance.

+0

Merci d'avoir répondu. Il y a toujours un surlignement en cours, lorsque je clique sur le bouton. Le reste est correct. Une idée comment l'arrêter? – c0d3x

+0

Vous pouvez probablement contrôler cela en définissant un 'ButtonUI' personnalisé. – McDowell

Répondre

2

Que diriez-vous

yourButton.setBorder(null); 

?

12

Il suffit de régler les couleurs et la frontière:

private static JButton createSimpleButton(String text) { 
    JButton button = new JButton(text); 
    button.setForeground(Color.BLACK); 
    button.setBackground(Color.WHITE); 
    Border line = new LineBorder(Color.BLACK); 
    Border margin = new EmptyBorder(5, 15, 5, 15); 
    Border compound = new CompoundBorder(line, margin); 
    button.setBorder(compound); 
    return button; 
} 

Utilisez setOpaque(false); pour rendre le fond transparent.

1

Vous pouvez utiliser un JLabel avec un MouseListener à la place ... sauf si vous êtes lié à l'utilisation d'un JButton ou d'ActionListener d'une manière ou d'une autre.

+0

Cela fonctionne, mais a des implications sur la mise au point et l'accessibilité du clavier. – McDowell

23

Je ne sais pas si je l'ai raté un point ... Mais je ne habituellement somtehing comme ceci:

button.setBorderPainted(false); 
button.setFocusPainted(false); 
button.setContentAreaFilled(false); 
+0

setContentAreaFilled (false) était la dernière chose qui me manquait pour rendre le bouton vraiment plat sans bordure - merci! – rob

+0

ça marche bien, maintenant comment ajouter du soulignement sur le JButton? –

0

Tout d'abord, définissez votre look et se sentir à quelque chose de cool, comme « métal ».

try 
{ 
    for (UIManager.LookAndFeelInfo lnf : 
     UIManager.getInstalledLookAndFeels()) { 
     if ("Metal".equals(lnf.getName())) { 
      UIManager.setLookAndFeel(lnf.getClassName()); 
      break; 
     } 
    } 
} catch (Exception e) { /* Lazy handling this >.> */ } 

faire quelque chose comme ceci:

my_jbutton.setBackground(new Color(240,240,241); 

Si la couleur de votre bouton équivaut exactement à balancer la couleur de commande (240240240), les fenêtres s'appliqueront le style Windows comme bouton pour le bouton, sinon , le bouton suppose un style plat simple.