2009-12-03 9 views
11

qual è il modo più semplice per mostrare un solo colore di sfondo a un JButton? Non ho bisogno di altri effetti come i bordi, l'aspetto 3D o l'evidenziazione del passaggio del mouse.Come rendere JButton con uno stile semplice e piatto?

Grazie in anticipo.

+0

Grazie per aver risposto. C'è ancora un'evidenziazione in corso, quando clicco sul pulsante. Il resto è ok. Qualche idea su come smettere di evidenziare ftom? – c0d3x

+0

Probabilmente è possibile controllarlo impostando un personalizzato 'ButtonUI'. – McDowell

risposta

2

Come su

yourButton.setBorder(null); 

?

12

Basta impostare i colori e il confine:

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; 
} 

Usa setOpaque(false); per rendere lo sfondo trasparente.

1

Si consiglia di utilizzare una JLabel con un MouseListener invece ... a meno che non si sia vincolati all'utilizzo di JButton o ActionListener in qualche modo.

+0

Funzionerà, ma ha implicazioni per il focus/accessibilità della tastiera. – McDowell

23

Non so se ho perso un punto ... Ma Io di solito somtehing come questo:

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

setContentAreaFilled (false) era l'ultima cosa che mi mancava per rendere il pulsante veramente piatto senza bordi - grazie! – rob

+0

funziona bene, ora come aggiungo la sottolineatura su JButton? –

0

In primo luogo, impostare il vostro look e si sentono a qualcosa di fresco, come 'metal'.

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

poi fare qualcosa di simile:

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

Se il colore del tasto è uguale esattamente ad oscillare controllo del colore (240.240.240), le finestre si applicheranno Windows-like stile del pulsante al pulsante, altrimenti , il pulsante assume uno stile semplice e piatto.

Problemi correlati