2009-06-30 28 views
21

Normalmente con Java El columpio se puede establecer el color de fondo de un botón con:Cómo establecer el color de fondo de un JButton en el Mac OS

myJButton.setBackground(Color.RED); 

que haría que el botón sea rojo. Pero en Mac OS, este método parece ser ignorado. El botón simplemente mantiene el color predeterminado.

¿Cómo se puede establecer el color de un JButton en Mac OS?

+0

probablemente tendrá que hacerlo de alguna manera y acceder a la funcionalidad a través de JNI. Odio los Mac. – ldog

+1

"Solo porque su único no significa que sea útil". – ldog

Respuesta

32

¿Has probado configurar JButton.setOpaque (verdadero)?

JButton button = new JButton("test"); 
button.setBackground(Color.RED); 
button.setOpaque(true); 
+0

Gracias. Me perdí completamente la llamada setOpaque(). –

+4

Parece que necesita agregar un comando setBorderPainted (falso) para que el botón sea opaco (Java 6 en Mavericks). –

+8

Bien, esta no es la versión en mac de la configuración del fondo de Windows JButton. Literalmente solo establece el fondo detrás del botón, pero en las ventanas se puede cambiar el color del botón. ¿Cómo se puede cambiar el botón mac gris para que sea de otro color? –

24

¿Ha intentado configurar el borde pintado como falso?

JButton button = new JButton(); 
button.setBackground(Color.red); 
button.setOpaque(true); 
button.setBorderPainted(false); 

Funciona en mi mac :)

+3

Sí, esta debería ser la respuesta correcta al tratar de obtener los mismos resultados desde la perspectiva de Window. Gracias. –

+0

Esto no funciona para mí en Windows 7/Java 8. La superficie del botón permanece gris, solo el bit del fondo alrededor del botón cambia el color. – Mischa

+0

Esta fue la solución para mí en Mac OS 10.11/Java 8. ¡Gracias! – BNetz

17

Si usted no está obligado a usar interfaz de Apple y sentir, una solución simple es poner el siguiente código en su aplicación o applet, antes de agregar cualquier interfaz gráfica de usuario componentes a su JFrame o JApplet: método de la setBackground()

try { 
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 
} catch (Exception e) { 
      e.printStackTrace(); 
} 

que establecerá la apariencia a la mirada de plataforma cruzada y la sensación, y entonces trabajar para cambiar el color de fondo de un JButton.

+0

Creo que esta es la respuesta correcta. –

+0

Me alegro de haber encontrado esto. Necesitaba tanto setLookAndFeel() como setOpaque (verdadero) – humanity

0

¡Tengo un mac también! aquí está el código que funcione:

myButton.setBackground(Color.RED); 
myButton.setOpaque(true); //Sets Button Opaque so it works 

antes de hacer nada o la adición de cualquier componente de establecer el aspecto y la sensación por lo que se ve mejor:

try{ 
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 
}catch(Exception e){ 
    e.printStackTrace(); 
} 

que se supone que cambiar la apariencia de la apariencia y sensación de plataforma cruzada, ¡espero haber ayudado! :)

+0

jojo respondió esto anteriormente ya – Blauhirn

+0

Nunca mensionó myButton.setOpaque (true); –

0

Según sus propios fines, puede hacerlo en base a setOpaque (verdadero/falso) y setBorderPainted (verdadero/falso); intente y combínelos para que se ajuste a su propósito

+0

¿Cuántas veces más cree que debe repetirse la misma respuesta? –

+0

Dado que las diferentes combinaciones obtienen resultados diferentes, la publica. De acuerdo, recibí tu sugerencia. Gracias. – Xiaogang

Cuestiones relacionadas