2009-12-03 10 views
11

¿Cuál es la forma más sencilla de hacer que un JButton solo muestre el color de fondo? No necesito otros efectos como bordes, aspecto 3D o resaltado de desplazamiento.¿Cómo hacer JButton con estilo plano simple?

Gracias de antemano.

+0

Gracias por responder. Todavía hay un resaltado pasando, cuando hago clic en el botón. El resto esta bien. ¿Alguna idea de cómo detenerla para resaltar? – c0d3x

+0

Probablemente pueda controlar eso configurando una 'ButtonUI' personalizada. – McDowell

Respuesta

2

¿Qué tal

yourButton.setBorder(null); 

?

12

Sólo hay que establecer los colores y la frontera:

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

Uso setOpaque(false); para que el fondo transparente.

1

En su lugar, puede utilizar un JLabel con un MouseListener ... a menos que esté vinculado al uso de un JButton o ActionListener de alguna manera.

+0

Eso funcionará, pero tiene implicaciones para el enfoque/accesibilidad del teclado. – McDowell

23

No sé si me he perdido un punto ... Pero Por lo general somtehing así:

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

setContentAreaFilled (falso) era lo último que me faltaba para hacer que el botón fuera realmente plano sin un borde, ¡gracias! – rob

+0

funciona bien, ¿cómo añado el subrayado en JButton? –

0

En primer lugar, establecer su aspecto y la sensación de algo fresco, como 'metal'.

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

luego hacer algo como esto:

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

Si el color de su botón se iguala exactamente para hacer pivotar el color de control (240 240 240), las ventanas se aplicarán como ventanas estilo de botón para el botón, pues , el botón asume un estilo plano simple.

Cuestiones relacionadas